MySQL实现ROW_NUMBER()---(给查询平均成绩的结果加上名次)
2016-12-26 09:25
423 查看
最近使用MySQL遇到了一个问题,给排序自动加上名次....坑爹货啊
百度一下,你就知道~~
大致方法如下:
这里要注意两点:
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,非空
*/
百度一下,你就知道~~
大致方法如下:
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,非空
*/
相关文章推荐
- SQL为查询的结果加上序号(ROW_NUMBER) 合并多个查询结果
- SQL为查询的结果加上序号(ROW_NUMBER) 合并多个查询结果
- Mysql 查询实现成绩排名,相同分数名次相同,类似于rank()函数
- SQL为查询的结果加上序号(ROW_NUMBER) 合并多个查询结果
- Mysql 查询实现成绩排名,相同分数名次相同,类似于rank()函数
- SQL为查询的结果加上序号(ROW_NUMBER) 合并多个查询结果
- MySql 实现row_number时的问题
- 利用MySQL的一个特性实现MySQL查询结果的分页显示
- 深入理解用mysql_fetch_row()以数组的形式返回查询结果
- MYSQL-实现ORACLE- row_number() over(partition by ) 分组排序功能
- MySQL 查询结果以百分比显示简单实现
- 查询学生平均成绩及其名次_24
- 在SQL Server2000中实现rowNumber功能:查询中生成自动增长列
- 使用mysql_fetch_row()以数组的形式返回查询结果
- mysql中如何实现row_number
- mysql查询中实现oracle中的rownum函数的效果,返回每行查询结果的行序号
- MYSQL-实现row_number() over(partition by ) 分组排序功能
- MYSQL-实现ORACLE- row_number() over(partition by ) 分组排序功能.
- mysql实现类似rownumber()的效果
- MYSQL-实现ORACLE- row_number() over(partition by ) 分组排序功能优化