标签:名次 NO stu 实例 MySQL ------ 排序 SELECT row
MySQL实现排名
一、排名
新MySQL8.0推出RANK排名函数,完全支持排名这种需求,但是必须MySQL8.0 以上版本才支持这个特性
那么8.0以下的版本有什么方法实现呢?
方法:使用用户变量,记录名次
用户自定义变量:以"@“开始,形式为”@name",以区分用户变量及列名。它可以是任何随机的,复合的标量表达式,只要其中没有列指定
例如:
使用用户变量
select @a:=1 m,@b:=@a+1 n;
执行结果:mn12
符号 " := " 是赋值的意思,与Java、Python等编程语言赋值有点区别
二、实例
给输入的记录按某种顺序计数
自定义变量【@】row初始值为0,并每次+1后赋值给自己;
例1:给学生信息表中的记录定名次
SELECT (@row:=@row+1) 名次,NO,NAME FROM stu a,(SELECT @row:=0) b;
-----@row的初始值为0
例2:按出生日期定名次
SELECT (@row:=@row+1) 名次,NO,NAME,bir
FROM stu a,(SELECT @row:=0) b
ORDER BY bir DESC;
例3:按身高从低到高排序排序
SELECT (@row:=@row+1) 排序号,NO,NAME,height
FROM stu a,(SELECT @row:=0) b
ORDER BY height;
例4:按成绩定名次,如果成绩相同,再按学号排序
SELECT NO,cno,result,(@row:=@row+1) 名次
FROM grade a,(SELECT @row:=0) b
ORDER BY result DESC,NO;
SELECT SUM(@row:=@row+1) a FROM (SELECT * FROM stu LIMIT 10) a,(SELECT)
感谢每一个认真阅读我文章的人!!!
如果下面这些资料用得到的话可以直接拿走:
1、自学开发或者测试必备的完整项目源码与环境
2、测试工作中所有模板(测试计划、测试用例、测试报告等)
3、软件测试经典面试题
4、Python/Java自动化测试实战.pdf
5、Jmeter/postman接口测试全套视频获取
我个人整理了我这几年软件测试生涯整理的一些技术资料,包含:电子书,简历模块,各种工作模板,面试宝典,自学项目等。如果在学习或工作中遇到问题可以直接点击此链接进群询问,群里也会有大神帮忙解答,也可以手动添加群号 743262921 备注222
标签:名次,NO,stu,实例,MySQL,------,排序,SELECT,row 来源: https://blog.csdn.net/shuang_waiwai/article/details/121516661
本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享; 2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关; 3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关; 4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除; 5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。