5. SQL 語法排序

使用 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。

沒有留言:

張貼留言