mysql8.0窗口函数排序row_number;rank;dense_rank

概述

在mysql5.7的时候想在sql中展示下数据行号,得用变量来实现。
在mysql8之后终于有现成的窗口函数来实现了

row_number

连续的行号

ROW_NUMBER() OVER(PARTITION BY xxx,xxx,xxx分块的字段 ORDER BY xxx排序) r

捞个demo
mysql8.0窗口函数排序row_number;rank;dense_rank_第1张图片

rank和dense_rank

这两区别就是一个是连续的排序(dense_rank),一个是跳跃的(rank)

rank

select * ,rank() over(order by score desc) 名次 from sc;

捞个网图,可以看到80分的并列排序之后接着直接跳到11
mysql8.0窗口函数排序row_number;rank;dense_rank_第2张图片

dense_rank

select * ,dense_rank() over(order by score desc) 名次 from sc;

可以看到80分的并列排序之后接下来的排序还是依次往下排
mysql8.0窗口函数排序row_number;rank;dense_rank_第3张图片

你可能感兴趣的:(Mysql,mysql)