概述
在mysql5.7的时候想在sql中展示下数据行号,得用变量来实现。
在mysql8之后终于有现成的窗口函数来实现了
row_number
连续的行号
ROW_NUMBER() OVER(PARTITION BY xxx,xxx,xxx分块的字段 ORDER BY xxx排序) r
捞个demo
rank和dense_rank
这两区别就是一个是连续的排序(dense_rank),一个是跳跃的(rank)
rank
select * ,rank() over(order by score desc) 名次 from sc;
捞个网图,可以看到80
分的并列排序之后接着直接跳到11
了
dense_rank
select * ,dense_rank() over(order by score desc) 名次 from sc;
可以看到80
分的并列排序之后接下来的排序还是依次往下排