分页和排序

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

总结

  1. 排序ORDER BY 字段 ASC/DESC,ASC 升序、DESC 降序
  2. 分页LIMIT 起始下标, 每页条数,核心公式 LIMIT (N-1)*pageSize, pageSize
  3. 组合使用:先排序、再分页,常用于排名、列表展示、TopN 查询
posted @ 2026-04-13 20:42  果子同志  阅读(23)  评论(0)    收藏  举报