在 MySQL 中,ORDER BY 用于对查询结果进行排序,可以按升序或降序排列数据。它是 SELECT 语句中常用的子句之一,通常放在 WHERE、GROUP BY 和 HAVING 之后,LIMIT 之前。
基本语法
ORDER BY 的基本语法如下:
SELECT 列名 FROM 表名 ORDER BY 列名 [ASC | DESC];其中:
ASC 表示升序(默认) DESC 表示降序按单列排序
最常见的用法是根据某一列对结果排序。例如,从用户表中按年龄升序显示:
SELECT * FROM users ORDER BY age ASC;若要按年龄从大到小排列:
SELECT * FROM users ORDER BY age DESC;按多列排序
可以同时按多个字段排序。比如先按部门排序,再在每个部门内按工资降序排列:
SELECT * FROM employees ORDER BY department, salary DESC;这表示先以 department 升序排列,相同部门的员工再按 salary 降序排列。
使用表达式或函数排序
ORDER BY 还支持表达式或函数。例如按姓名的长度排序:
SELECT * FROM users ORDER BY CHAR_LENGTH(name) DESC;也可以结合 CONCAT 等函数进行排序:
SELECT first_name, last_name FROM users ORDER BY CONCAT(last_name, first_name);结合 LIMIT 使用
常与 LIMIT 搭配获取前 N 条记录。例如获取工资最高的 5 名员工:
SELECT * FROM employees ORDER BY salary DESC LIMIT 5;基本上就这些。ORDER BY 是查询中非常实用的功能,掌握好排序规则能有效提升数据展示的可读性。注意字段索引对排序性能的影响,尤其是大数据量时建议在排序字段上建立索引。
