怎么样成功查询MySQL并列排名和顺序排名
发表于:2025-01-31 作者:千家信息网编辑
千家信息网最后更新 2025年01月31日,下面一起来了解下怎么样成功查询MySQL并列排名和顺序排名,相信大家看完肯定会受益匪浅,文字在精不在多,希望怎么样成功查询MySQL并列排名和顺序排名这篇短内容是你想要的。 准备。创建一张叫score
千家信息网最后更新 2025年01月31日怎么样成功查询MySQL并列排名和顺序排名
下面一起来了解下怎么样成功查询MySQL并列排名和顺序排名,相信大家看完肯定会受益匪浅,文字在精不在多,希望怎么样成功查询MySQL并列排名和顺序排名这篇短内容是你想要的。
准备。
创建一张叫scores的表,内容如下。因为测试排名,所以就用最简单的结构。
id | score |
---|---|
1 | 99 |
2 | 80 |
3 | 87 |
4 | 60 |
5 | 80 |
6 | 99 |
需求。
获取分数排名,要求并列排名。如果两个分数相同,则两个分数排名(rank)相同。名次之间不应该有"间隔"。
结果如下。
id | score | rank |
---|---|---|
1 | 99 | 1 |
6 | 99 | 1 |
3 | 87 | 2 |
2 | 80 | 3 |
5 | 80 | 3 |
4 | 60 | 4 |
sql语句
select id, score, (select count(distinct(score)) from scores as b where b.score > a.score ) + 1 as rank from scores as a order by rank;先把结果拿出来,然后再分析怎么思考这个问题。这里的查询关键字我都没有大写,个人习惯!应该是要大写的。
分析。
按照上面的需求,我们可以知道我们是要做一个按照分数(score)查询的一个功能,只不过是要给排序好的结果加上一个我们想要的名次。我们笨想,我们要想知道某个分数排第几名,是不是知道有几个比它大就行了。如果有零个比它大的,那么它就是第一名,如果只有一个比它大,那么它就是第二名。以此类推就好了。那么我们来分析上面的sql语句。它就是把socres表分成了俩个一样的表,a 表,b表。然后通过子查询去查rank的值。第一步:select id,score, rank from scores order by rank;我们查询我们要的信息,但是我们scores表中没有rank这个字段,所以就要分成俩个一 样的表,做子查询,来查rank。第二步:select id,score,(select count(score) from scores as b where b.score > a.score) + 1 as rank from scores as a order by rank;上面说过了 如果0个比某分数大,那么它就是第一名。所以我们要再查询的个数上加1。结果如下:
我们发现结果不是我们预期的。因为我们还没有去重。比87大的有俩个都是99,那么87的rank就是2+1=3,而我们要的排名连续不断的。所以用distinct关键字去重。第三步:select id, score, (select count(distinct(score)) from scores as b where b.score > a.score ) + 1 as rank from scores as a order by rank;
顺序排名预期结果
顺序排名我们就按照score字段倒序查询即可,只不过是用msyql的变量去做rank。mysql中的变量是用'@'跟上变量名称。@rowNum php中我们用$rowNum。mysql中赋值用 := 来赋值。(select @rowNum :=0) r 是给变量@rowNum一个初始值为0。这个很好理解。就是按照我们要排名的字段倒序去查询,再用mysql变量给每一条结果加一个排列序号。
sql语句
select t.id, t.score,@rowNum := @rowNum +1 as rank from (select @rowNum :=0) r, scores as t order by t.score desc ;
结果
看完怎么样成功查询MySQL并列排名和顺序排名这篇文章后,很多读者朋友肯定会想要了解更多的相关内容,如需获取更多的行业信息,可以关注我们的行业资讯栏目。
查询
结果
分数
就是
顺序
变量
成功
内容
字段
语句
分析
相同
两个
信息
倒序
关键
关键字
只不过
名次
大写
数据库的安全要保护哪些东西
数据库安全各自的含义是什么
生产安全数据库录入
数据库的安全性及管理
数据库安全策略包含哪些
海淀数据库安全审计系统
建立农村房屋安全信息数据库
易用的数据库客户端支持安全管理
连接数据库失败ssl安全错误
数据库的锁怎样保障安全
应用软件开发课程大纲
软件项目的后台是不是就是服务器
美国的vpn服务器地址
迅雷网盘能当服务器吗
网络安全园周边发展
cs服务器哪个版本好
医院网络安全领导小组
access数据库重命名
服务器可以和粉丝一起用吗
监控服务器的别名
创建一流网络安全学院
三丰云服务器是真的吗
通鼎互联网科技公司
mysql更改数据库隔离级别
点点爱互联网科技有限公司
wps如何删除掉重复数据库
服务器推送框架
本地网站搭建数据库错误
防拐骗网络安全的手抄报
国家宣传周四川网络安全博览会
南京晓庄论文数据库
中国鼓励互联网科技发展
上海数字化分析管理软件开发商
学校如何提高网络安全意识
数据库英文名称
水务行业网络安全收费
网络安全员必备技能
家政服务软件开发方案
网络安全公司销售怎么样
联合索引的数据库代码