ORDER BY
- 單個列排序
- 多個列排序
- 按列位置排序
- 指定排序方向 ASC/DESC
- 指定多個列進行排序
單個列排序
為了明確地排序 SELECT 語句檢索出的數據,可使用 ORDER BY 子句。ORDER BY 子句取一個或多個列的名字,據此對輸出進行排序。
例: DBMS 軟件對 prod_name 列以字母順序排序數據:
SELECT prod_name
FROM Products
ORDER BY prod_name;
【1】ORDER BY 子句的位置通常是在 SQL 查詢語句的末尾,用于對查詢結果進行排序。
多個列排序
常用多個列排序比如要顯示雇員的名單,希望首先按照姓進行排序,然后再對姓的排序結果按照名進行排序;
SELECT *
FROM Students
ORDER BY LastName, FirstName;
按列位置排序
除了上述我們的排序方法外,我們還可以通過按照列位置進行排序;
SELECT prod_id, prod_price, prod_name
FROM Products
ORDER BY 2,3;
# ORDER BY 2,3 等同于 ORDER BY prod_price, prod_name
【1】盡量減少使用 2,3 的寫法,雖然簡便,但是極容易引發錯誤;
指定排序方向 ASC/DESC
跳出 SQL 排序,我們知道,排序不限于順序排序,還有倒序排序等;
在 SQL 中,ORDER BY 默認為順序排序,即 ASC;同時我們可以設置倒序排序,即 DESC,示例如下:
SELECT prod_id, prod_price, prod_name
FROM Products
ORDER BY prod_price DESC;
上述代碼含義為按照價格的降序排序(價格最高在最前面);
指定多個列進行排序
對 prod_price 列進行降序排序 DESC,對 prod_name 進行升序排序;
SELECT prod_id, prod_price, prod_name
FROM Products
ORDER BY prod_price DESC, prod_name;
【1】如果希望對多個列進行降序排序,那么需要在每一個屬性后都加上 DESC 標識;
【2】升序是默認的,所以若不指定 DESC,則 ORDER BY 中屬性為升序;
【3】ASC 為 ASCENDING,DESC 為 DESCENDING;
【4】A與a的排序問題需要在具體的DESC中去發掘;