4. MySQL必知必會之排序檢索數據-ORDER BY
本章將講授如何使用SELECT語句的ORDER BY子句,根據需要排序檢 索出的數據。
1. 排序數據
?? 子句(clause) SQL語句由子句構成,有些子句是必須的,而有的是可選的。一個子句通常由一個關鍵字和所提供的數據組成。子句的例子有SELECT 語句的FROM 子句。
為了明確地排序用SELECT語句檢索出的數據,可使用ORDER BY子句取一個或多個列的名字,據此對輸出進行排序。
請看下面的例子:
輸入:
SELECT prod_num
FROM products
ORDER BY prod_num
輸出:
分析: 這條語句指示MySQL對 prod_num列以數字順序排序數據。
??通過非選擇列進行排序
通常,ORDER BY子句中使用的列將是為顯示所選擇的列。但是,實際上並不一定要這樣,用非檢索的列排序數據是完全合法的。
2.按多個列排序
輸入:
SELECT prod_id, prod_price, prod_name
FROM products
ORDER BY prod_price, prod_name
輸出:
prod_id | prod_price | prod_name |
---|---|---|
FC | 2.50 | Carrots |
TNT1 | 2.50 | TNT(1 stick) |
FU1 | 3.42 | Fuses |
SLING | 4.49 | Sling |
分析
??重要的是理解按多個列排序時,排序完全按所規定的順序進行。對於上面的例子,僅在多個行具有相同的prod_price值時才對產品按prod_name進行排序。如果prod_price列中所有的值都是唯一的,則不會按prod_name排序。
3.指定排序方向
數據排序不限於升序排序(從A到Z ),這只是默認的排序順序。還可以使用ORDER BY 子句以降序(從Z到A)順序排序。
關鍵字:DESC
按價格以降序排序產品(最貴的排在最前面)
輸入:
```
SELECT prod_id, prod_price, pro_name
FROM producs
ORDER BY prod_price DESC;
```
如果想要用多個列排序,下面的例子以降序排序產品(最貴的在最前面),然後再對產品名排序:
輸入:
SELECT prod_id, prod_price, prod_name
FROM products
ORDER BY prod_price DESC, pro_name
分析 : DESC關鍵字只應用到直接位於其前面的列名。在上例中,只對prod_price列指定DESC列以降序排序,而prod_name列(在每個價格內)仍然按標準的升序排序。
??在多個列上降序排序
如果想在多個列上進行降序排序,必須對每個列指定DESC關鍵字。
使用ORDER BY和LIMIT的組合,能夠找到一個列中最高或最低的值。
找到最高的值:
輸入:
SELECT prod_price
FROM products
ORDER BY prod_price DESC
LIMIT 1
輸出:
prod_price |
---|
55.00|
分析: prod_price DESC 保證行是按照有最昂貴到最便宜檢索的,而LIMIT 1告訴MySQL僅返回一行。
?? ORDER BY 子句的位置
在給出ORDER BY子句時,應該保證它位於FROM子句之後。如果使用LIMIT,它必須位於ORDER BY 之後。使用子句的次序不對將產生錯誤消息。
4.小結
本章學習了如何用SELECT語句的ORDER BY子句對檢索出的數據進行 排序。這個子句必須是SELECT語句中的最後一條子句。可根據需要,利 用它在一個或多個列上對數據進行排序。
4. MySQL必知必會之排序檢索數據-ORDER BY