怎么样成功查询MySQL并列排名和顺序排名
发表于:2025-11-10 作者:千家信息网编辑
千家信息网最后更新 2025年11月10日,下面一起来了解下怎么样成功查询MySQL并列排名和顺序排名,相信大家看完肯定会受益匪浅,文字在精不在多,希望怎么样成功查询MySQL并列排名和顺序排名这篇短内容是你想要的。 准备。创建一张叫score
千家信息网最后更新 2025年11月10日怎么样成功查询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安全错误
数据库的锁怎样保障安全
软件开发 批准格式
服务器端口80
莆田站网络安全攻防演练
校园网络安全学习感想
麦块服务器大全
计算机网络技术连线题
hive查询数据库表
欣网互联网络科技郑州
承德软件开发操作
网络技术作战应用前景
云鼎盛互联网科技
浪潮服务器配置步骤
公共数据库查基因关联性
带云开发数据库的小程序源码
环保局网络安全责任制度
数据库应用技术约定符号
山西新一代软件开发过程检测中心
网络安全法 网络数据是指
学游戏软件开发必须要会英语吗
网络安全公益大讲堂在贵阳开课
网络安全事件纪录片
数据库默认值表达式怎么
软件开发平台是指什么意思
数据库的select show
超级群英传服务器维护
ipad免费vpn服务器
光合维度软件开发有限公司
什么是数据库调优
cet 无法连接服务器
office显示遇到临时服务器问题