查询出数据之后,经常还需要对结果进行排序,例如按时间倒序显示最新记录、按价格升序显示商品、按成绩排名等。MySQL 中排序主要依靠 ORDER BY 完成。
单字段排序的基本语法如下:
SELECT 字段列表
FROM 表名
ORDER BY 字段名 [ASC|DESC];
其中:
ASC:升序,默认值DESC:降序例如按年龄升序查询:
SELECT *
FROM user
ORDER BY age ASC;
如果省略 ASC,默认也是升序:
SELECT *
FROM user
ORDER BY age;
按创建时间倒序查询最新记录:
SELECT *
FROM article
ORDER BY created_at DESC;
这类写法在“最新发布”“最近更新”“金额最高”等场景中非常常见。
如果一个字段不足以完成排序,可以同时按多个字段排序。
基本语法如下:
SELECT 字段列表
FROM 表名
ORDER BY 字段1 排序方式, 字段2 排序方式;
例如先按城市升序,再按年龄降序:
SELECT *
FROM user
ORDER BY city ASC, age DESC;
它的含义是:
city 排序city 相同,再按照 age 排序再例如,按订单状态和创建时间联合排序:
SELECT *
FROM orders
ORDER BY status ASC, created_at DESC;
多字段排序非常适合:
排序查询的关键是 ORDER BY。单字段排序适合简单列表,多字段排序适合更复杂的业务规则。实际开发中,最常见的组合通常是“某状态字段 + 时间倒序”。