15158846557 在线咨询 在线咨询
15158846557 在线咨询
所在位置: 首页 > 营销资讯 > 网站运营 > MySQL排名函数

MySQL排名函数

时间:2023-06-26 11:30:02 | 来源:网站运营

时间:2023-06-26 11:30:02 来源:网站运营

MySQL排名函数:MySQL8.0之后新增了几个排序函数

接下来我们就对这几个函数进行具体分析

首先准备一个用户表user:

CREATE TABLE `user` ( `id` int NOT NULL AUTO_INCREMENT, `name` varchar(20) CHARACTER SET utf8mb4 NULL, `score` int NOT NULL DEFAULT 0, PRIMARY KEY (`id`));接下来准备数据:

INSERT INTO `s_score` (`name`, `score`) VALUES('刘备', 80),('关羽', 70),('张飞', 60),('黄忠', 70),('赵云', 80),('马超', 87);演示结果:

rank()

select id,name,score,rank() OVER(order by score desc) as rank

idnamescorerank
6马超871
1刘备802
5赵云802
2关羽704
4黄忠704
3张飞606
可以看到rank函数会将score值相同的归为一组且每组序号一样,排序不会连续




dense_rank()

select id,name,score,dense_rank() OVER(order by score desc) as dense_rank

idnamescoredense_rank
6马超871
1刘备802
5赵云802
2关羽703
4黄忠703
3张飞604
可以看到dense_rank函数会将score值相同的归为一组且每组序号一样,且排序会连续




row_number()

select id,name,score,row_number() OVER(order by score desc) as row_number

idnamescorerow_number
6马超871
1刘备802
5赵云803
2关羽704
4黄忠705
3张飞606
可以见到row_number对score字段排序,排名是连续的,即使出现相同,也不会并列排名次



关键词:函数

74
73
25
news

版权所有© 亿企邦 1997-2025 保留一切法律许可权利。

为了最佳展示效果,本站不支持IE9及以下版本的浏览器,建议您使用谷歌Chrome浏览器。 点击下载Chrome浏览器
关闭