分页和排序
MySQL 数据库学习笔记(续)
四、DQL 数据查询语言
4.6 分页和排序
-- =================== 分页和排序 ==================== --
4.6.1 排序 ORDER BY
语法:ORDER BY 字段名 排序方式
- 升序:
ASC(默认,可不写) - 降序:
DESC
-- 查询的结果 成绩降序排序
SELECT s.studentno 学号,studentname 学生姓名,subjectname 科目名,studentresult 分数
FROM student AS 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 DESC
4.6.2 分页 LIMIT
语法:LIMIT 查询起始下标, 页面大小
LIMIT 0,5→ 第 1~5 条数据LIMIT 1,5→ 第 2~6 条数据
为什么要分页?
缓解数据库压力,给人的体验感更好(另一种方式:瀑布流展示-不分页)
-- 分页,每页只显示5条数据
SELECT s.studentno 学号,studentname 学生姓名,subjectname 科目名,studentresult 分数
FROM student AS 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 1,5
分页公式:
- 第一页:
LIMIT 0,5 - 第二页:
LIMIT 5,5 - 第三页:
LIMIT 10,5
通用公式:
第N页:LIMIT (N-1)*pageSize, pageSize
pageSize:页面大小(每页几条)
(N-1)*pageSize:起始值
n:当前页
数据总数/页面大小 = 总页数
思考题
-- 查询 高等数学 课程成绩排名前十的学生,并且分数要大于等于80的学生信息(学号,姓名,课程名称,分数)
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 LIKE '高等数学%' AND studentresult >=80
ORDER BY studentresult DESC
LIMIT 0,10
总结
- 排序:
ORDER BY 字段 ASC/DESC,ASC 升序、DESC 降序 - 分页:
LIMIT 起始下标, 每页条数,核心公式LIMIT (N-1)*pageSize, pageSize - 组合使用:先排序、再分页,常用于排名、列表展示、TopN 查询

浙公网安备 33010602011771号