MySQL ORDER BY 语句
用 ORDER BY 排序,ASC/DESC 与多列排序。
Key PointsORDER BY 默认升序;多列排序从左到右依次比较。
基本用法
SQL
SELECT * FROM users ORDER BY age DESC; -- 年龄从大到小
SELECT * FROM users ORDER BY age DESC, username ASC; -- 先年龄后姓名Output
+----+----------+-----+
| id | username | age |
+----+----------+-----+
| 2 | bob | 32 |
| 1 | alice | 29 |
| 3 | carol | 25 |
+----+----------+-----+与 LIMIT 配合分页
SQL
SELECT * FROM users ORDER BY id ASC LIMIT 10 OFFSET 20; -- 第 3 页ORDER BY on a non-indexed column triggers a filesort, slow at scale. Always order pagination by an indexed column (PK, created_at).
基本用法
SQL
SELECT * FROM users ORDER BY age DESC; -- 年龄从大到小
SELECT * FROM users ORDER BY age DESC, username ASC; -- 先年龄后姓名Output
+----+----------+-----+
| id | username | age |
+----+----------+-----+
| 2 | bob | 32 |
| 1 | alice | 29 |
| 3 | carol | 25 |
+----+----------+-----+与 LIMIT 配合分页
SQL
SELECT * FROM users ORDER BY id ASC LIMIT 10 OFFSET 20; -- 第 3 页ORDER BY 的列若没有索引,MySQL 会做「文件排序(filesort)」,数据量大时很慢。分页务必按有索引的列(如主键、创建时间)排序。