ROW_NUMBER()、RANK()、DENSE_RANK()

ROW_NUMBER()函数作用就是将SELECT查询到的数据进行排序,每一条数据加一个序号。

RANK()函数,顾名思义排名函数,可以对某一个字段进行排名。

DENSE_RANK()函数,排名函数,可以对某一个字段进行排名。

那他们有什么区别呢?下面我们一起看下执行结果:

select *, 
row_number() over (order by Salary desc)
from Employee;

不了解OVE()函数的可以参考:MySQL函数 - OVER() 函数

select *, 
rank() over (order by Salary desc)
from Employee;

select *,
dense_rank() over (order by Salary desc)
from Employee;

有什么区别

从上面的例子可以看到row_number()数据相同排序号不同,递增;rank()数据相同排序号相同,但排序号不连续;dense_rank()数据相同排序号相同,并且排序号连续。你懂了不😉