在hive和oracle等数据库中,我们有开窗函数row_number可以快速便捷的生成序号。但是在mysql中,似乎不那么容易实现。其实在MySQL中一样可以实现。

话不多说,先上代码!!!

SELECT
	a.*, @rank :=@rank+1 as no
FROM(    ]
    SELECT *
    from `student_score_table` 
	ORDER BY `score` desc
    )	a 
LEFT JOIN (
    SELECT @rank :=0 
    ) b 
on 1 = 1

首先,需要先定义一个变量rank,然后与排序好的数据表做关联,依次做自增就好。

这里简单介绍一下MySQL中变量的定义:

使用set或select直接赋值,变量名以 @开头

赋值符号:使用set 时可以用 “=“或者“:=”     但是使用select赋值时必须使用“:=”赋值

mysql总变量不用事先声明,在用的时候直接用@变量名 使用即可

Logo

为开发者提供学习成长、分享交流、生态实践、资源工具等服务,帮助开发者快速成长。

更多推荐