您的位置:首页 > 数据库 > MySQL

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

2016-12-26 09:25 423 查看
最近使用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,非空

*/
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: