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_nameORDER 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 列表的更改可能会破坏排序逻辑。推荐使用列名进行排序。
对于以下示例,我们假设有一个名为 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;这意味着来自“Argentina”的所有客户将出现在“Brazil”之前,而在“Argentina”内部,客户将按姓名字母顺序排序。
ORDER BY 多列混合顺序示例
Section titled “ORDER BY 多列混合顺序示例”以下 SQL 语句选择所有客户,首先按 Country 升序排序,然后在每个国家内部按 City 降序排序:
SELECT CustomerName, City, CountryFROM CustomersORDER BY Country ASC, City DESC;因此,对于“Germany”,如果存在德国客户,像“München”这样的城市将出现在“Berlin”之前。
按表达式和 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 文档以了解具体信息。
-
将产品从最便宜到最昂贵排序。
-
按姓氏字母顺序列出用户。
-
显示最新评论。