mysql自动排序函数dense_rank() over()、rank() over()、row_num() over()用法和区别

区别:

  • rank():是并列排序,会跳过重复序号
  • dense_rank():是并列排序,不会跳过重复序号
  • row_number():是顺序排序,不跳过任何一个序号,就是行号

用法:

数据准备:

create table students(
	id int(11)  auto_increment primary key,
	name varchar(50) not null, 
	score int(4) not null
	);

insert into students(name,score) values
('zhangsan', 100),
('lisi', 99),
('wangwu', 100), 
('trx', 90), 
('pjf', 99), 
('wzm', 96);

查看下插入的数据:

select * from students;

mysql自动排序函数dense_rank() over()、rank() over()、row_num() over()用法和区别_第1张图片

使用三种不同的方法进行排序:

select 
	id, 
	name, 
	rank() over(order by score desc) `rank`,
	dense_rank() over(order by score desc) `dense_rank`,
	row_number() over(order by score desc) `row_number` 
from students;

结果:

 

 

 

你可能感兴趣的:(MySQL)