ORDER BY
按照指定字段对结果进行升序或降序排列。
简介
ORDER BY 对最终结果按一个或多个表达式排序,默认是 ASC,也可以显式指定 DESC。若排序字段存在并列值,需要追加唯一字段作为次级排序,才能得到稳定顺序。没有 ORDER BY 时,数据库不保证行的返回顺序。
基础语法
SELECT * FROM orders ORDER BY amount DESC, id;
示例
ORDER BY 示例
按 amount 从高到低排列订单,并用 id 作为并列值的稳定次序,确认最大金额位于结果顶部。
示例数据表
表名:
orders| id | customer_id | product_id | name | department | amount | status | created_at | discount |
|---|---|---|---|---|---|---|---|---|
| 1 | 101 | 201 | Alice | Sales | 1200 | paid | 2026-01-03 | 0 |
| 2 | 102 | 202 | Bob | IT | 900 | pending | 2026-01-08 | 50 |
| 3 | 101 | 201 | Cindy | Sales | 1500 | paid | 2026-02-02 | 100 |
| 4 | 104 | 203 | David | HR | 700 | cancelled | 2026-02-15 | 0 |
运行结果
| id | customer_id | product_id | name | department | amount | status | created_at | discount |
|---|---|---|---|---|---|---|---|---|
| 3 | 101 | 201 | Cindy | Sales | 1500 | paid | 2026-02-02 | 100 |
| 1 | 101 | 201 | Alice | Sales | 1200 | paid | 2026-01-03 | 0 |
| 2 | 102 | 202 | Bob | IT | 900 | pending | 2026-01-08 | 50 |
| 4 | 104 | 203 | David | HR | 700 | cancelled | 2026-02-15 | 0 |
常见问题
不写 ASC 或 DESC 时是什么顺序?
默认是 ASC 升序;需要降序时应明确写 DESC。
可以按多个字段排序吗?
可以,数据库先按第一个字段排序,再用后续字段处理并列记录。
LIMIT 前为什么常要写 ORDER BY?
没有 ORDER BY 时,LIMIT 返回哪些行没有稳定的业务含义。
标签
这篇内容是否清楚?
感谢反馈,我们会把它用于后续内容复核。