把查詢的結果排序︰ORDER BY

前頁 目錄 下頁

從以上的例子中,我們可以看見查詢的結果中,記錄排列的次序是依照本來的表中的記錄編號。我們通常希望結果會是根據一個我們喜歡的次序顯示出來。

使用了 ORDER BY 短句的 SELECT 語句的語法如下︰

SELECT <字段列表> FROM <表的名稱> [<WHERE短句>]
  ORDER BY <算式> [ASC | DESC] {, <算式> [ASC | DESC]}

ORDER BY 短句中,一個 <算式> 可以是在 <字段列表> 中出現過的字段名稱或是同址別名

關鍵字 ASC 表示結果是跟據指定算式由小至大排列;另一方面,關鍵字 DESC 表示結果是跟據指定算式由大至小排列。如果在 ORDER BY 短句中沒有出現 ASCDESC,排序方法會被當作是由小至大。

如果在 ORDER BY 短句中出現了多於一個算式,第一個算式會是最主要的排序鍵,第二個會是其次的排序鍵……等等。

以下是一些例子︰

列出所有學生的班號、學生編號及姓名,記錄必須依學生編號的由小至大排序
SELECT class_num, stud_id, name FROM s6a ORDER BY stud_id
輸出︰
class_num stud_id name
4 91131 Hung Wai Ming
7 91194 Sung Hing Wah, Patrick
1 92114 Chan Wai Man, Raymond
2 92133 Chow Chi Ling
9 92145 Wong Ka Tak, Kent
5 92153 Leung King
6 92211 Poon Kwok Fai
10 93211 Yeung Chun
3 94302 Fung Ching Man, Mandy
12 94412 Chan Lai Yin
14 95343 Chung Kwok Fai, Fred
11 96374 Lai Fung Chun
15 97233 Lee Lai May
8 97602 Tang Wing Chi
13 98832 Man Fook Wing
 
列出所有在中國語文及文化和英語運用獲得及格分數(50 分)或以上的同學的姓名和該兩科的分數。結果必須依中國語文及文化的分數由小至大排序。如果多於一個記錄的中國語文及文化分數相同,它們必須依英語運用的分數由大至小排序。
SELECT name, clc, ue FROM s6a WHERE clc >= 50 AND ue >= 50
  ORDER BY clc ASC, ue DESC
輸出︰
name clc ue
Man Fook Wing 55 77
Poon Kwok Fai 59 60
Chan Wai Man, Raymond 64 55
Lee Lai May 67 71
Yeung Chun 69 80
Sung Hing Wah, Patrick 70 72
Chow Chi Ling 70 62
Chung Kwok Fai, Fred 72 62
Fung Ching Man, Mandy 72 50
Lai Fung Chun 78 75
Tang Wing Chi 80 79

留意 Sung Hing Wah, Patrick 和 Chow Chi Ling 均在中國語文及文化獲得 70 分,但 Sung Hing Wah, Patrick 的英語運用分數較高,因此他的記錄在 Chow Chi Ling 之後。

同樣道理,Chung Kwok Fai, Fred 的記錄在 Fung Ching Man, Mandy 之後。