排序和分页
ORDER BY 和 LIMIT 子句用于对查询结果进行排序和限制返回的行数。本章将详细介绍如何使用这些子句。
ORDER BY 排序
基本语法
升序排序(默认)
降序排序
多列排序
结果示例:
按表达式排序
按列位置排序
注意:不推荐使用列位置,因为不够清晰。
NULL 值排序
LIMIT 限制结果
基本语法
限制返回行数
OFFSET 跳过行
分页查询
计算分页参数
分页公式
完整分页示例
获取总记录数
TOP N 查询
查询前 N 条记录
查询每组的前 N 条
随机排序
注意:RAND() 在大表上性能较差。
实战示例
示例 1:商品列表分页
示例 2:最新订单
示例 3:排行榜
示例 4:分页优化
性能优化
1. 为排序列创建索引
2. 避免深度分页
3. 覆盖索引
不同数据库的语法
MySQL
PostgreSQL
SQL Server
Oracle
常见错误
错误 1:ORDER BY 在 LIMIT 之后
错误 2:忘记排序就分页
最佳实践
- 分页查询始终使用 ORDER BY
- 为排序列创建索引
- 避免深度分页
- 使用稳定的排序列(如主键)
- 考虑使用游标分页代替 OFFSET
小结
- ORDER BY:对结果排序
- ASC/DESC:升序/降序
- LIMIT:限制返回行数
- OFFSET:跳过指定行数
- 分页:LIMIT + OFFSET 实现分页
- 性能:创建索引,避免深度分页
下一步: 学习 GROUP BY 分组