MySQL使用变量实现各种排序

发布时间 - 2026-01-11 01:12:11    点击率:

核心代码

--下面我演示下MySQL中的排序列的实现
--测试数据
CREATE TABLE tb
(
score INT
);
INSERT tb SELECT 
5 UNION ALL SELECT 
4 UNION ALL SELECT 
4 UNION ALL SELECT 
4 UNION ALL SELECT 
3 UNION ALL SELECT 
2 UNION ALL SELECT
1;
--1.row_number式的排序
SET @row_number =0;
SELECT @row_number := @row_number+1 AS row_number,score 
FROM tb 
ORDER BY score DESC ;
+------------+-------+
| row_number | score |
+------------+-------+
|     1 |   5 |
|     2 |   4 |
|     3 |   4 |
|     4 |   4 |
|     5 |   3 |
|     6 |   2 |
|     7 |   1 |
+------------+-------+
--2.dense_rank式的排序
SET @dense_rank = 0,@prev_score = NULL;
SELECT @dense_rank :=IF(@prev_score=score,@dense_rank,@dense_rank+1) AS decnse_rank,
  @prev_score := score AS score 
FROM tb 
ORDER BY score DESC ; 
+-------------+-------+
| decnse_rank | score |
+-------------+-------+
|      1 |   5 |
|      2 |   4 |
|      2 |   4 |
|      2 |   4 |
|      3 |   3 |
|      4 |   2 |
|      5 |   1 |
+-------------+-------+
--3.rank式的排序
SET @row=0,@rank=0,@prev_score=NULL;
SELECT @row:=@row+1 AS ROW,
    @rank:=IF(@prev_score=score,@rank,@row) AS rank,
    @prev_score:=score AS score
FROM tb 
ORDER BY score DESC;
+------+------+-------+
| ROW | rank | score |
+------+------+-------+
|  1 |  1 |   5 |
|  2 |  2 |   4 |
|  3 |  2 |   4 |
|  4 |  2 |   4 |
|  5 |  5 |   3 |
|  6 |  6 |   2 |
|  7 |  7 |   1 |
+------+------+-------+


# MySQL  # 变量  # 各种排序  # MySQL 使用自定义变量进行查询优化  # mysql查询语句中用户变量的使用代码解析  # MySQL中使用自定义变量 编写偷懒的UNION示例  # MySQL 中定义和使用变量的方法  # 测试数据  # score  # tb  # INT  # UNION  # SELECT  # INSERT  # TABLE  # brush  # class  # pre  # CREATE  # sql  # decnse_rank  # NULL  # prev_score  # ROW 


相关栏目: 【 网站优化151355 】 【 网络推广146373 】 【 网络技术251813 】 【 AI营销90571


相关推荐: Laravel怎么配置.env环境变量_Laravel生产环境敏感数据保护与读取【方法】  Laravel数据库迁移怎么用_Laravel Migration管理数据库结构的正确姿势  米侠浏览器网页背景异常怎么办 米侠显示修复  成都网站制作公司哪家好,四川省职工服务网是做什么用?  打开php文件提示内存不足_怎么调整php内存限制【解决方案】  邀请函制作网站有哪些,有没有做年会邀请函的网站啊?在线制作,模板很多的那种?  Laravel如何使用.env文件管理环境变量?(最佳实践)  Laravel如何使用Eloquent ORM进行数据库操作?(CRUD示例)  如何快速生成橙子建站落地页链接?  深圳网站制作培训,深圳哪些招聘网站比较好?  高防服务器租用如何选择配置与防御等级?  Laravel怎么解决跨域问题_Laravel配置CORS跨域访问  php打包exe后无法访问网络共享_共享权限设置方法【教程】  Laravel如何实现数据导出到PDF_Laravel使用snappy生成网页快照PDF【方案】  如何在橙子建站上传落地页?操作指南详解  Windows10如何删除恢复分区_Win10 Diskpart命令强制删除分区  zabbix利用python脚本发送报警邮件的方法  Laravel如何优雅地处理服务层_在Laravel中使用Service层和Repository层  免费视频制作网站,更新又快又好的免费电影网站?  JavaScript实现Fly Bird小游戏  Laravel Eloquent模型如何创建_Laravel ORM基础之Model创建与使用教程  Laravel队列由Redis驱动怎么配置_Laravel Redis队列使用教程  矢量图网站制作软件,用千图网的一张矢量图做公司app首页,该网站并未说明版权等问题,这样做算不算侵权?应该如何解决?  Android Socket接口实现即时通讯实例代码  Laravel如何从数据库删除数据_Laravel destroy和delete方法区别  QQ浏览器网页版登录入口 个人中心在线进入  ,南京靠谱的征婚网站?  如何彻底卸载建站之星软件?  Java垃圾回收器的方法和原理总结  Laravel Fortify是什么,和Jetstream有什么关系  详解免费开源的.NET多类型文件解压缩组件SharpZipLib(.NET组件介绍之七)  Laravel API资源类怎么用_Laravel API Resource数据转换  Laravel如何记录自定义日志?(Log频道配置)  韩国代理服务器如何选?解析IP设置技巧与跨境访问优化指南  如何快速搭建自助建站会员专属系统?  简历没回改:利用AI润色让你的文字更专业  Swift开发中switch语句值绑定模式  Python结构化数据采集_字段抽取解析【教程】  昵图网官方站入口 昵图网素材图库官网入口  如何正确选择百度移动适配建站域名?  南京网站制作费用,南京远驱官方网站?  如何用花生壳三步快速搭建专属网站?  安克发布新款氮化镓充电宝:体积缩小 30%,支持 200W 输出  Laravel全局作用域是什么_Laravel Eloquent Global Scopes应用指南  浅谈Javascript中的Label语句  Laravel Docker环境搭建教程_Laravel Sail使用指南  Laravel如何使用Gate和Policy进行授权?(权限控制)  使用spring连接及操作mongodb3.0实例  Laravel怎么使用Markdown渲染文档_Laravel将Markdown内容转HTML页面展示【实战】  如何在 Pandas 中基于一列条件计算另一列的分组均值