mysql 四大排名函数(row_number()、rank()、dense_rank()、ntile()使用简介
1、row_number()
row_number在排名时序号 连续 不重复,即使遇到表中的两个3时亦如此;
注意:在使用row_number实现分页时需要特别注意一点,over子句中的order by 要与Sql排序记录中的order by 保持一致,否则得到的序号可能不是连续的
SELECT row_number() over(ORDER BY candyAmount DESC) as row_mun,candyAmount from customer;

2、rank()
rank函数会把要求排序的值相同的归为一组且每组序号一样,排序不会连续执行
SELECT rank() over(ORDER BY candyAmount DESC) as row_mun,candyAmount from customer;

3、dense_rank()
dense_rank排序是连续的,也会把相同的值分为一组且每组排序号一样
SELECT dense_rank() over(ORDER BY candyAmount DESC) as row_mun,candyAmount from customer;

4、ntile()
NTILE(group_num)将所有记录分成group_num个组,每组序号一样
SELECT ntile(300000) over(ORDER BY candyAmount DESC) as row_mun,candyAmount from customer;

MySQL 函数大全

浙公网安备 33010602011771号