SQL Order By
SQL ORDER BY 子句
Section titled “SQL ORDER BY 子句”ORDER BY 子句用于对查询结果集中的行进行排序。你可以按一个或多个列进行排序,排序方式可以是升序或降序。
SQL ORDER BY 子句详解
Section titled “SQL ORDER BY 子句详解”默认情况下,ORDER BY 子句按升序(ASC)对记录进行排序。要按降序排序记录,请使用 DESC 关键字。
如果未指定 ORDER BY 子句,数据库系统将按未定义的顺序返回行,这可能因查询执行计划、数据存储或甚至数据库版本而异。如果你需要一个确定的排序顺序,请务必使用 ORDER BY。
SQL ORDER BY 语法
Section titled “SQL ORDER BY 语法”SELECT column1, column2, … FROM table_name ORDER BY column_to_sort_by_1 [ASC|DESC], column_to_sort_by_2 [ASC|DESC], …;
-
ASC:按升序排序(A 到 Z,0 到 9)。这是默认排序方式。 -
DESC:按降序排序(Z 到 A,9 到 0)。
你也可以按列的位置进行排序(例如,使用 ORDER BY 2 DESC 按 SELECT 列表中的第二列降序排序),但这通常不建议这样做,因为 SELECT 列表的更改可能会破坏排序逻辑,不利于维护。优先使用列名进行排序。
示例表上下文
Section titled “示例表上下文”对于以下示例,我们假设有一个 Customers 表,包含 CustomerID、CustomerName、City 和 Country 等列。
ORDER BY 单列示例
Section titled “ORDER BY 单列示例”以下 SQL 语句从 Customers 表中选择所有客户,并按 Country 列升序(默认)排序:
SELECT CustomerName, City, CountryFROM CustomersORDER BY Country;ORDER BY DESC 示例
Section titled “ORDER BY DESC 示例”以下 SQL 语句从 Customers 表中选择所有客户,并按 Country 列降序排序:
SELECT CustomerName, City, CountryFROM CustomersORDER BY Country DESC;ORDER BY 多列示例
Section titled “ORDER BY 多列示例”以下 SQL 语句选择所有客户,首先按 Country(升序)排序,然后在每个国家内按 CustomerName(升序)排序:
SELECT CustomerName, City, CountryFROM CustomersORDER BY Country, CustomerName;这意味着来自“阿根廷”的所有客户将出现在“巴西”之前,而在“阿根廷”内部,客户将按名称字母顺序排序。
ORDER BY 多列混合排序示例
Section titled “ORDER BY 多列混合排序示例”以下 SQL 语句选择所有客户,首先按 Country 升序排序,然后在每个国家内按 City 降序排序:
SELECT CustomerName, City, CountryFROM CustomersORDER BY Country ASC, City DESC;因此,对于“德国”,像“慕尼黑”(München)这样的城市如果存在德国客户,会出现在“柏林”之前。
按表达式和 NULL 值排序
Section titled “按表达式和 NULL 值排序”你还可以按表达式进行排序,例如 ORDER BY LENGTH(CustomerName)。排序时对 NULL 值的处理(NULLS FIRST 或 NULLS LAST)因数据库而异,或者在某些系统中可以显式控制(例如,PostgreSQL 和 Oracle 允许使用 NULLS FIRST/NULLS LAST 修饰符)。默认情况下,许多系统将 NULL 视为低于任何非 NULL 值(因此 ASC 时 NULLS FIRST),或高于任何非 NULL 值(因此 ASC 时 NULLS LAST)。请查阅你的 RDBMS 文档了解具体细节。
实际应用场景:
Section titled “实际应用场景:”-
按价格从低到高显示产品。
-
按姓氏字母顺序列出用户。
-
首先显示最新评论。