MySQL实现排名------实例

15 篇文章 2 订阅
11 篇文章 1 订阅

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)

请添加图片描述

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值