mysql自動排序函式dense_rank() over()、rank() over()、row_num() over()用法和區別

TRX1024發表於2020-12-31

區別:

  • 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;

使用三種不同的方法進行排序:

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;

結果:

 

 

 

相關文章