在 SQL 中,ORDER BY
子句根据指定的列或表达式对查询结果进行排序。它被添加到 SELECT
语句的末尾,允许您控制输出中行的顺序。默认情况下,排序按升序进行(从 A 到 Z 或从 0 到 9),但您可以使用 ASC
(升序)或 DESC
(降序)显式定义方向。 例如,SELECT name, salary FROM employees ORDER BY salary DESC;
检索员工姓名和薪水,并按从高到低的顺序排列。这种基本用法适用于数值和文本数据,可以轻松地以可预测的方式组织结果。
您可以通过在 ORDER BY
子句中按顺序列出多个列来按多个列进行排序。 数据库按照它们出现的顺序处理这些列,逐步细化排序。例如,SELECT department, name, hire_date FROM employees ORDER BY department ASC, hire_date DESC;
首先按字母顺序按部门对员工进行排序,然后在每个部门内,按雇用日期(最新在前)对他们进行排序。 这种分层方法对于在保持辅助排序标准的同时对相关数据进行分组非常有用。请注意,每列都可以有自己的排序方向——例如,ORDER BY department DESC, name ASC
按 Z-A 对部门进行排序,但按 A-Z 对姓名进行排序。
高级排序包括表达式或函数。例如,SELECT product_name FROM products ORDER BY LENGTH(product_name);
按产品名称的长度对产品进行排序。您还可以通过它们在 SELECT
列表中的位置来引用列(例如,ORDER BY 2
按第二列排序)。但是,位置引用会降低可读性。在性能方面,排序大型数据集可能很慢,尤其是在没有索引的情况下。虽然 ORDER BY
对于组织输出至关重要,但在处理数百万行的查询中应避免不必要的排序。 如果需要经常在特定列上进行排序,请考虑将索引添加到这些列以提高效率。