1. 程式人生 > >4. MySQL必知必會之排序檢索數據-ORDER BY

4. MySQL必知必會之排序檢索數據-ORDER BY

block 關鍵字 blue -o 價格 指定 學習 如果 直接

本章將講授如何使用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

分析

: 上面的代碼中檢索3個列,並按其中兩個列對結果進行排序---首先價格,然後按名稱排序。

??重要的是理解按多個列排序時,排序完全按所規定的順序進行。對於上面的例子,僅在多個行具有相同的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