排序和分页,分组过滤
文章目录
排序
升序:ASC
降序:DESC
SELECT s.studentNO,studentName,subjectName,studentResult
FROM student s
INNER JOIN result r
ON s.studentNO = r.studentNO
INNER JOIN subject sub
ON r.subjectNO = sub.subjectNO
where subjectName = '数据结构-1'
ORDER BY studentResult ASC--升序
注意:ORDER BY必须是在where后面
分页
/*
分页:每页只显示5条数据
语法:limit 起始值,页面大小
*/
SELECT s.studentNO,studentName,subjectName,studentResult
FROM student s
INNER JOIN result r
ON s.studentNO = r.studentNO
INNER JOIN subject sub
ON r.subjectNO = sub.subjectNO
where subjectName = '数据结构-1'
ORDER BY studentResult ASC
LIMIT 5,5
--第一页 limit 0,5 (1-1)*5
--第二页 limit 5,5 (2-1)*5
--第三页 limit 10,5 (3-1)*5
--第N页 limit (N-1)*5,5
公式:limit (N-1)*pageSize,pageSize
--【pageSize:页面大小】
--【(N-1)*pageSize:起始值】
--【数据总数/页面大小 = 总页数】
语法:
limit(查询起始下标,pageSize)
实践:
--查询 JAVA第一学年 课程成绩排名前十的学生,并且分数要大于80的学生信息(学号,姓名,课程名称,分数)
SELECT s.studentNO,studentName,subjectName,studentResult
FROM student s
INNER JOIN result r
ON s.studentNO = r.studentNO
INNER JOIN subject sub
ON sub.subjectNO = r.subjectNO
WHERE subjectName = 'JAVA第一学年' AND studentResult>80
ORDER BY studentResult DESC
LIMIT 0,10
分组过滤
-- 查询不同课程的平均分,最高分,最低分
--核心:根据不同的课程分组
SELECT subjectName,AVG(studentResutl) AS 平均分,MAX(studentResult) AS 最高分,MIN(studentResult) AS 最低分
FROM result r
INNER JOIN `subject` sub
ON r.subjectNO = sub.subjectNO
GROUP BY r.subjectNO --通过什么字段来分组
HAVING 平均分>80 --分组后过滤