使用 ORDER BY 子句
查詢結果中所傳回的資料列順序,事先並未加以定義。ORDER BY 子句可以用來排序資料列。ORDER BY 子句必須是 SQL 敘述句的最後一個子句。您可以指定表示式、別名或資料欄位置 做為排序條件。
語法
語法
SELECT Expr
FROM table
[WHERE condition(s)]
[ORDER BY {column, expr, numeric_position} [ASC|DESC]];
|
在此語法中:
ORDER BY 指定所擷取的資料列的顯示順序
ASC 以升冪順序來排列資料列 (此為預設順序)
DESC 以降冪順序來排列資料列
如果未使用 ORDER BY 子句,便不會定義排序順序,Oracle 伺服器就不會以相同的順序重複擷取同一查詢的資料列。如果使用 ORDER BY 子句,即可以特定的順序顯示資料列。
以下範例是利用hire_date進行排序
SELECT last_name, job_id, department_id, hire_date
FROM employees ORDER BY hire_date ;
|
預設的排序順序為升冪重點如下:
- 數值會從最小的值開始顯示 (例如,從 1 到 999)。
- 日期值會以最早的值開始顯示 (例如,01-JAN-92 顯示在 01-JAN-95 之前)。
- 字元值是依字母順序顯示 (例如,最先顯示 A,最後才顯示 Z)。
- 升冪順序在最後才顯示空值,降冪順序則最先顯示空值。
- 可以依不在 SELECT 清單中的資料欄來排序。
以降冪排序範例
SELECT last_name, job_id, department_id, hire_date
FROM employees ORDER BY hire_date DESC ;
|
如果要反轉資料列顯示的順序,可在 ORDER BY 子句的資料欄名稱後指定 DESC 關鍵字。以上範例是依照最近聘用的員工來排序結果。
以資料欄位別名排序範例
SELECT employee_id, last_name, salary*12 annsal
FROM employees ORDER BY annsal ;
|
可以在ORDERBY子句中使用資料欄別名。投影片中的範例是以年薪來排序資料。
以多個資料欄位排序範例
SELECT last_name, department_id, salary FROM employees
ORDER BY department_id, salary DESC;
|
可以依多個資料欄來排序查詢結果。排序的限制是特定表格中的資料欄數目。在ORDER BY 子句中指定資料欄,再用逗號分隔資料欄。如果想要反轉資料欄的順序,請在資料欄名稱後指定 DESC。
沒有留言:
張貼留言