Oracle ORDER BY子句用于对结果集中的记录进行排序。 ORDER BY
子句只能在SELECT语句中使用。
语法
Oracle/PLSQL 中的ORDER BY的语法是:
SELECT expressions
FROM tables
[WHERE conditions]
ORDER BY expression [ ASC | DESC ];
参数
expressions
- 任何都可以满足要选择记录的条件。tables
- 任何都可以满足要选择记录的条件。WHERE conditions
- 任何都可以满足要选择记录的条件。ASC
- 可选的。它按照表达式(expression
)以升序对结果集进行排序(如果没有提供修饰符,这是默认值)。DESC
- 可选的。它按表达式(expression
)按降序对结果集进行排序。
注意
- 如果在
ORDER BY
子句中未提供ASC
或DESC
修饰符,则结果将按升序按表达式排序(这相当于ORDER BY expression ASC
。
示例1 - 不使用ASC/DESC属性进行排序
可以在使用Oracle ORDER BY
子句时不指定ASC
或DESC
值。 当在ORDER BY
子句中省略指定属性时,排序顺序默认为ASC
或按升序排序。
例如:
SELECT supplier_city
FROM suppliers
WHERE supplier_name = 'Microsoft'
ORDER BY supplier_city;
这个Oracle ORDER BY
示例将按 supplier_city
字段升序排序返回所有记录,并等效于以下ORDER BY
子句:
SELECT supplier_city
FROM suppliers
WHERE supplier_name = 'Microsoft'
ORDER BY supplier_city ASC;
大多数程序员如果想按升序排序,他们一般都会省略ASC
属性。
示例2 - 按降序排序
在以降序对结果集排序时,可以在ORDER BY
子句中使用DESC
属性,如下所示:
SELECT supplier_city
FROM suppliers
WHERE supplier_name = 'Microsoft'
ORDER BY supplier_city DESC;
这个Oracle ORDER BY
示例将按 supplier_city
字段排序返回的所有记录。
示例3 - 按相对位置排序
还可以使用Oracle ORDER BY
子句对结果集中的相对位置进行排序,结果集中的第一个字段为1
,第二个字段为2
,依此类推。
例如:
SELECT supplier_city
FROM suppliers
WHERE supplier_name = 'Microsoft'
ORDER BY 1 DESC;
这个Oracle ORDER BY
将按supplier_city
字段降序排序返回所有记录,因为supplier_city
字段位于结果集中的位置是#1
,等效于以下ORDER BY
子句:
SELECT supplier_city
FROM suppliers
WHERE supplier_name = 'Microsoft'
ORDER BY supplier_city DESC;
示例4 - 使用ASC和DESC属性
当使用Oracle ORDER BY
子句对结果集排序时,可以在单个SELECT
语句中使用ASC
和DESC
属性。
例如:
SELECT supplier_city, supplier_state
FROM suppliers
WHERE supplier_name = 'Microsoft'
ORDER BY supplier_city DESC, supplier_state ASC;
这个Oracle ORDER BY
查询将按照supplier_city
字段降序顺序和按照supplier_state
升序返回排序后的所有记录。