ORDER BY用于对查询结果排序,可按单个或多个字段升序(ASC)或降序(DESC)排列;支持使用字段位置编号排序,但推荐直接使用字段名以提高可读性;常与WHERE子句结合使用,先过滤后排序,确保数据准确有序。

在 mysql 中,ORDER BY 用于对查询结果进行排序。你可以按一个或多个字段排序,并指定升序或降序排列。基本语法如下:
select 列名 FROM 表名 ORDER BY 列名 [ASC | DESC];
按单个字段排序
如果你想根据某个字段对结果排序,比如按年龄从小到大(升序)显示用户信息:
SELECT * FROM users ORDER BY age ASC;
如果要从大到小(降序),使用 DESC:
SELECT * FROM users ORDER BY age DESC;
按多个字段排序
有时需要先按一个字段排,再按另一个字段细分。例如先按部门排序,再按工资从高到低:
SELECT * FROM employees ORDER BY department, salary DESC;
这表示先按 department 升序排列,同一部门内再按 salary 降序排列。
使用字段位置编号排序
你也可以用字段在 SELECT 中的位置来排序。比如第一个字段是 name,第二个是 age:
SELECT name, age FROM users ORDER BY 2 DESC;
这里 2 表示 age 字段,等同于 ORDER BY age DESC。虽然可用,但不推荐,因为可读性差,容易出错。
结合 WHERE 条件使用
排序常与其他子句搭配。例如查询年龄大于 25 的用户,并按注册时间倒序显示:
SELECT * FROM users WHERE age > 25 ORDER BY created_at DESC;
注意:WHERE 在 ORDER BY 之前执行,所以过滤后再排序。
基本上就这些。ORDER BY 是查询中非常实用的功能,掌握好能让你快速获取有序数据。


