ORDER BY
ORDER BY 子句在 SQL 中使用,对 SELECT 语句的结果集进行排序。 这意味着它根据一列或多列的值对输出的行进行排列。
这对于以更易于解释和使用的方式组织数据至关重要。 可以指定一个或多个列作为排序依据,并且可以控制排序顺序:升序(从小到大或从小到大或从 A 到 Z)或降序(从大到小或 Z 到 A)。 若不使用 ORDER BY,返回的行的顺序是不可预知的。
按升序排序(默认)
SELECT *
FROM sales.products
ORDER BY price;
此查询检索按价格以升序排序的产品,这是 ORDER BY 的默认行为。
尽管冗余,但可以在查询末尾显式添加 ASC,这可提高可读性。
若要更改顺序,需要显式地指出这一点,如以下示例所示。
按降序排序
SELECT *
FROM sales.products
ORDER BY price DESC;
此查询检索按价格以降序排序的产品。
按多个列排序
SELECT *
FROM sales.customers
ORDER BY country, city;
此查询从 sales.customers 表中检索所有列 (*),然后对生成的行进行排序。
排序以两个级别完成:首先,结果按“国家/地区”列以字母顺序排序。 这意味着来自“Argentina”的所有客户将被分组在一起,然后是来自“Austria”的客户,依此类推。
- 在同一国家/地区的每个客户组中,结果按城市列按字母顺序排序。 因此,如果你有多个来自“Germany”的客户,他们将按他们的城市名称排序(例如“Aachen”在“Berlin”之前)。
从本质上讲,此查询提供一个客户列表,该列表主要按 country 组织,然后在每个 country 中按 city 组织。 这样可以轻松地从特定区域查找客户。
此外,将此方法与 ASC 或 DESC 修饰符相结合,可以完全控制每列的排序方向。
SELECT *
FROM sales.customers
ORDER BY country ASC, city DESC;
此查询以升序对国家/地区进行排序,同时以降序组织每个国家/地区的城市。