MySQL实现ROW_NUMBER()---(给查询平均成绩的结果加上名次)

最近使用MySQL遇到了一个问题,给排序自动加上名次....坑爹货啊

百度一下,你就知道~~

大致方法如下:

SELECT  @rownum := @rownum + 1
FROM (SELECT @rownum:=0) r

这里要注意两点:

1、SQL中 select变量赋值用的是 := 而不是 =

2、from 一个select结果语句的时候,后面要给查询到的结果一个别名,否则在sql中,没办法解析,认为你的主查询后面不是表....,着实的补了一把基础....


例子:

#24、查询学生平均成绩及其名次 
SELECT tmp1.*, @rownum := @rownum+1 AS '名次'
FROM (SELECT sc.`S#` AS '学号', AVG(sc.score) AS '平均成绩'
FROM sc
GROUP BY sc.`S#`
ORDER BY AVG(sc.score) DESC) tmp1, (SELECT @rownum:=0) r

查询语句中各个表的解释:

#创建教师表
/*
T#:教师编号:主键,varchar(20)
Tname:教师名字:varchar(20),非空
*/


#创建学生表
/*
S#:学号,主键,varchar(20)
Sname:姓名,varchar(15),不唯一
Sage:年龄,int,不唯一
Ssex:性别,选择男或女,enum类型
*/


#创建课程表
/*
C#,课程编号:主键,varchar(20)
Cname:课程名字:varchar(20),非空
T#:教师编号:外键
*/


#创建成绩表
/*
S#:学号:外键
C#,课程编号:外键
score:成绩:int,非空
*/

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值