最近使用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,非空
*/