窗口函数里面的排序的函数竟然不止rank!

mysql里面窗口函数排序
row_number和rank的区别是啥啊

row_number会为查询出来的每一行记录生成一个序号,依次顺序排序且不会重复
rank函数用于返回结果集的分区内每行的排名,行的排名是相关行之前的排名数加一。rank与row_number函数不同的是,rank函数考虑到over子句中排序字段值相同的情况,over子句中排序字段值相同的序号是一样的,后面字段值不相同的序号将跳过相同的排名号排下一个,也就是相关行之前的排名数加一,可以理解为根据当前的记录数生成序号,后面的记录依此类推

img

img

rank():跳跃排序;
dense_rank():连续排序;
row_number():没有重复值的排序(记录相等也是不重复的),可以进行分页使用。
所以不单单是有rank(). 还有row_number还有 dense_rank()

举个例子row_number()

img

rank()

img

dense_rank()

img