MySQL 系统学习 第二阶段 第三章 DQL(Data Query Language)第三节:ORDER BY + LIMIT(排序 + 分页)
📅 2026/7/7 11:25:34
👁️ 阅读次数
📝 编程学习
一、为什么必须学 ORDER BY + LIMIT?
你在真实业务中一定见过这些场景:
- 用户列表(按时间排序)
- 商品列表(按价格排序)
- 订单列表(最新订单在最上面)
- 分页(第1页、第2页、第3页)
这些全部依赖:
ORDER BY + LIMIT二、ORDER BY(排序)
1. 基本语法
SELECT * FROM student ORDER BY 字段 排序方式;2. 升序(ASC)
SELECT * FROM student ORDER BY age ASC;👉 ASC = ascending(升序)
结果:
19 → 20 → 21 → 223. 降序(DESC)
SELECT * FROM student ORDER BY age DESC;👉 DESC = descending(降序)
结果:
22 → 21 → 20 → 194. 默认排序规则
如果你不写:
ORDER BY age默认是:
ASC(升序)三、按多个字段排序(企业高频)
场景:
先按年龄排序,年龄相同再按成绩排序
SELECT * FROM student ORDER BY age ASC, score DESC;解释:
第一优先级:age(小 → 大) 如果 age 相同: 第二优先级:score(大 → 小)示例逻辑:
| name | age | score |
|---|---|---|
| Tom | 20 | 88.5 |
| Mike | 20 | 78.5 |
排序后:
Tom(20, 88.5) Mike(20, 78.5)四、ORDER BY 本质(很重要)
数据库执行逻辑:
FROM → WHERE → ORDER BY → SELECT👉 排序发生在过滤之后
五、LIMIT(分页核心)
1. 基础语法
SELECT * FROM student LIMIT 数量;2. 示例
取前3条数据:
SELECT * FROM student LIMIT 3;六、LIMIT + ORDER BY(最常用组合)
场景:取“最高分前三名”
SELECT * FROM student ORDER BY score DESC LIMIT 3;结果:
Lucy 95.5 Jack 91 Tom 88.5七、分页(重点中的重点)
1. 基本公式
LIMIT 起始位置, 数量2. 示例
第1页(每页2条)
SELECT * FROM student LIMIT 0, 2;第2页
SELECT * FROM student LIMIT 2, 2;第3页
SELECT * FROM student LIMIT 4, 2;3. 分页公式(必须记住)
offset = (page - 1) * pageSize4. 举例(非常重要)
每页2条:
| 页码 | SQL |
|---|---|
| 1 | LIMIT 0,2 |
| 2 | LIMIT 2,2 |
| 3 | LIMIT 4,2 |
八、ORDER BY + LIMIT 实战
1. 查询成绩最高的1个人
SELECT * FROM student ORDER BY score DESC LIMIT 1;2. 查询年龄最小的2个人
SELECT * FROM student ORDER BY age ASC LIMIT 2;九、企业开发真实用法(非常重要)
1. 用户列表
SELECT id, name, age FROM user ORDER BY create_time DESC LIMIT 20;👉 最新用户在前
2. 商品列表
SELECT id, name, price FROM product ORDER BY price DESC LIMIT 10;👉 最贵商品
3. 分页接口(后端常见)
SELECT * FROM user ORDER BY id DESC LIMIT 20 OFFSET 40;👉 第3页数据
十、LIMIT 为什么很重要?
因为:
如果没有 LIMIT:
SELECT * FROM user;可能返回:
100万条数据👉 直接拖垮接口
十一、ORDER BY + LIMIT 性能问题(面试加分)
❗ 深分页问题
LIMIT 100000, 20问题:
数据库要先扫描 100000 条再丢掉
👉 很慢
优化思路(了解即可)
WHERE id > last_id LIMIT 20👉 用“游标分页”替代 offset 分页
十二、本节总结
| 功能 | SQL |
|---|---|
| 升序 | ORDER BY col ASC |
| 降序 | ORDER BY col DESC |
| 多字段排序 | ORDER BY a, b DESC |
| 取前N条 | LIMIT N |
| 分页 | LIMIT offset, size |
| 分页公式 | (page-1)*size |
编程学习
技术分享
实战经验