返回顶部
首页 > 资讯 > 数据库 >怎么样成功查询MySQL并列排名和顺序排名
  • 176
分享到

怎么样成功查询MySQL并列排名和顺序排名

2024-04-02 19:04:59 176人浏览 独家记忆
摘要

下面一起来了解下怎么样成功查询Mysql并列排名和顺序排名,相信大家看完肯定会受益匪浅,文字在精不在多,希望怎么样成功查询mysql并列排名和顺序排名这篇短内容是你想要的。    &nb

下面一起来了解下怎么样成功查询Mysql并列排名和顺序排名,相信大家看完肯定会受益匪浅,文字在精不在多,希望怎么样成功查询mysql并列排名和顺序排名这篇短内容是你想要的。                                                           怎么样成功查询MySQL并列排名和顺序排名

准备。

创建一张叫scores的表,内容如下。因为测试排名,所以就用最简单的结构。
idscore
199
280
387
460
580
699

需求。

获取分数排名,要求并列排名。如果两个分数相同,则两个分数排名(rank)相同。名次之间不应该有“间隔”。

结果如下。

idscorerank
1991
6991
3872
2803
5803
4604

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。结果如下:

怎么样成功查询MySQL并列排名和顺序排名

我们发现结果不是我们预期的。因为我们还没有去重。比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;

怎么样成功查询MySQL并列排名和顺序排名

顺序排名预期结果

怎么样成功查询MySQL并列排名和顺序排名

顺序排名我们就按照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并列排名和顺序排名

看完怎么样成功查询MySQL并列排名和顺序排名这篇文章后,很多读者朋友肯定会想要了解更多的相关内容,如需获取更多的行业信息,可以关注我们的数据库栏目。

您可能感兴趣的文档:

--结束END--

本文标题: 怎么样成功查询MySQL并列排名和顺序排名

本文链接: https://lsjlt.com/news/35457.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

猜你喜欢
  • 怎么样成功查询MySQL并列排名和顺序排名
    下面一起来了解下怎么样成功查询MySQL并列排名和顺序排名,相信大家看完肯定会受益匪浅,文字在精不在多,希望怎么样成功查询MySQL并列排名和顺序排名这篇短内容是你想要的。    &nb...
    99+
    2024-04-02
  • php mysql怎么查询排名
    本文操作环境:Windows7系统、PHP7.1版、DELL G3电脑php mysql怎么查询排名?PHP+mysql 实现排名并查询指定用户排名情形如下: 对用户表里的所有用户 的积分大小 【point 】实现排名 并 得到某一个用...
    99+
    2016-02-09
    php mysql
  • MYSQL如何实现排名及查询指定用户排名功能
    这篇文章主要介绍了MYSQL如何实现排名及查询指定用户排名功能,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。表结构:CREATE ...
    99+
    2024-04-02
  • mysql怎么分组查询并排序
    要在MySQL中进行分组查询并排序,可以使用GROUP BY和ORDER BY子句。 例如,假设我们有一个名为"emplo...
    99+
    2024-04-09
    mysql
  • php怎么查询数据库并正序排列
    PHP是一门流行的编程语言,被广泛应用于Web应用程序的开发。在Web应用程序中,通常会使用一种以上的数据库来存储和管理数据。PHP中有很多方法可以查询数据库,其中一个方法是正序排列。在本篇文章中,我们将探讨如何使用PHP进行数据库查询正序...
    99+
    2023-05-14
    php 数据库
  • mysql怎么按姓名排序
    mysql中实现按姓名排序的方法例:表结构如下:desc test;+----+-------+| id | name |+----+-------+| 5 | 王六 |+----+-------+| 3 | 张三 |+----+-----...
    99+
    2024-04-02
  • mysql怎么查询数据并排序输出
    要查询数据并排序输出,可以使用以下 SQL 查询语句: SELECT * FROM 表名 ORDER BY 列名 DESC;...
    99+
    2024-04-09
    mysql
  • mysql怎么查询排序规则
    mysql中查询排序规则的方法首先,在命令行中启动MySQL服务;service mysql start  MySQL服务启动后,在命令行中输入mysql的用户名和密码登录到MySQL;mysql -u root -p登录到MySQL后,选...
    99+
    2024-04-02
  • 怎么在Mysql中利用排序获取排名
    这篇文章将为大家详细讲解有关怎么在Mysql中利用排序获取排名,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。代码如下所示:SELECT @...
    99+
    2024-04-02
  • 在 MySQL 中,如何使用查询未检索到的列来指定排序顺序?
    实际上,我们知道我们可以借助 ORDER BY 子句指定排序顺序。我们需要编写 ORDER BY 关键字,后跟要对表进行排序的列的名称。我们不必在查询中的 SELECT 关键字后面使用该列名称。示例mysql> Select ...
    99+
    2023-10-22
  • 小程序学科排名功能怎么开发
    这篇文章主要介绍“小程序学科排名功能怎么开发”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“小程序学科排名功能怎么开发”文章能帮助大家解决问题。数据库学科评估的结果,说白了就是某个高校的某个学科怎么样...
    99+
    2023-06-26
  • 怎么对MySQL查询结果进行排序
    怎么对MySQL查询结果进行排序,很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。  MySQL查询结果如何排序  之前有一个功能...
    99+
    2024-04-02
  • MySQL怎么对查询结果进行排序
    在MySQL中,可以使用ORDER BY子句对查询结果进行排序。ORDER BY子句可以根据一个或多个列进行排序,并且还可以指定排序...
    99+
    2024-04-09
    MySQL
  • mysql怎么查询表的所有列名
    要查询表的所有列名,可以使用以下SQL语句: SHOW COLUMNS FROM 表名; 例如,要查询名为"users&...
    99+
    2024-05-21
    mysql
  • 微信小程序排名规则是怎么样的
    小编给大家分享一下微信小程序排名规则是怎么样的,希望大家阅读完这篇文章之后都有所收获,下面让我们一起去探讨吧!1.尽快注册 当企业想要开发小程序时就要知道申请注册时别再犹豫,尽早申请注册;申请注册越快,企业的小程序排名就越高。微信小程序如同...
    99+
    2023-06-27
  • mysql查询结果怎么生成序列号
    在 MySQL 中,可以通过使用用户变量来生成序列号。以下是一个示例查询,演示如何生成序列号: SET @row_number = ...
    99+
    2024-05-21
    mysql
  • Python怎么根据照片修改时间重命名并排序
    这篇文章将为大家详细讲解有关Python怎么根据照片修改时间重命名并排序,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。一、Background当想将照片序列合成延时摄影视频时,可能会发现照片中缺少一张,或...
    99+
    2023-06-15
  • mysql怎么查看字符集和排序规则
    在MySQL中,可以使用以下命令来查看字符集和排序规则: 查看当前数据库的字符集和排序规则: SHOW VARIABLES LI...
    99+
    2024-04-09
    mysql
  • mysql怎么查询所有表名和注释
    可以通过以下SQL语句查询所有表名和注释: SELECT table_name, table_comment FROM in...
    99+
    2024-05-14
    mysql
  • Linux du命令怎么查看文件夹大小并按降序排列
    本篇内容主要讲解“Linux du命令怎么查看文件夹大小并按降序排列”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“Linux du命令怎么查看文件夹大小并按降序排列”吧! df -lh du -...
    99+
    2023-06-09
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作