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()数据相同排序号相同,并且排序号连续。你懂了不😉