SQL語句學習之路3

  • 2020 年 1 月 13 日
  • 筆記

到目前為止,我們已學到如何藉由  SELECT  及  WHERE   這兩個指令將資料由表格中抓出。

不過我們尚未提到這些資料要如何排列。這其實是一個很重要的問題。事實上,我們經常需

要能夠將抓出的資料做一個有系統的顯示。這可能是由小往大  (ascending)     或是由大往小

(descending)。在這種情況下,我們就可以運用  ORDER BY  這個指令來達到我們的目的。

ORDER BY 的語法如下:  

SELECT "欄位名"  

FROM "表格名"  

[WHERE "條件"]

ORDER BY "欄位名" [ASC, DESC]  (DESC 是descend 降序意思 asc 是ascend 升序的意思)

[]  代表  WHERE子句不是一定需要的。不過,如果WHERE子句存在的話,它是在

ORDER BY  子句之前。  ASC  代表結果會以由小往大的順序列出,而 DESC代表結果會以

由大往小的順序列出。如果兩者皆沒有被寫出的話,那我們就會用ASC。

我們可以照好幾個不同的欄位來排順序。在這個情況下, ORDER BY子句的語法如下(假

設有兩個欄位):

ORDER BY "欄位一" [ASC, DESC], "欄位二" [ASC, DESC]

若我們對這兩個欄位都選擇由小往大的話,那這個子句就會造成結果是依據 "欄位一"            由小

往大排。若有好幾筆資料 "欄位一"值相等,那這幾筆資料就依據  "欄位二"   由小往大排。

舉例來說,若我們要依照  Sales     欄位的由大往小列出  Store_Information  表格中的資料,

Store_Information  表格

我們就鍵入:

SELECT store name,Sales,Date FROM Store InFormation ORDER BY Sales DESC

//從表格 InFormation 中查找 store name,Sales,Date 然後倒序 Sales

結果:

在以上的例子中,我們用欄位名來指定排列順序的依據。除了欄位名外,我們也可以用欄位

的順序  (依據  SQL  句中的順序)。在  SELECT  後的第一個欄位為  1,第二個欄位為  2,以

此類推。在上面這個例子中,我們用以下這句  SQL  可以達到完全一樣的效果:

SELECT store_name, Sales, Date  

FROM Store_Information  

ORDER BY 2 DESC  

ORDER BY 語句用於對結果集進行排序。

ORDER BY 語句

ORDER BY 語句用於根據指定的列對結果集進行排序。

ORDER BY 語句默認按照升序對記錄進行排序。

如果您希望按照降序對記錄進行排序,可以使用 DESC 關鍵字。

原始的表 (用在例子中的):

Orders 表:

Company

OrderNumber

IBM

3532

W3School

2356

Apple

4698

W3School

6953

實例 1

以字母順序顯示公司名稱:

SELECT Company, OrderNumber FROM Orders ORDER BY Company

結果:

Company

OrderNumber

Apple

4698

IBM

3532

W3School

6953

W3School

2356

實例 2

以字母順序顯示公司名稱(Company),並以數字順序顯示順序號(OrderNumber):

SELECT Company, OrderNumber FROM Orders ORDER BY Company, OrderNumber

結果:

Company

OrderNumber

Apple

4698

IBM

3532

W3School

2356

W3School

6953

實例 3

以逆字母順序顯示公司名稱:

SELECT Company, OrderNumber FROM Orders ORDER BY Company DESC

結果:

Company

OrderNumber

W3School

6953

W3School

2356

IBM

3532

Apple

4698

實例 4

以逆字母順序顯示公司名稱,並以數字順序顯示順序號:

SELECT Company, OrderNumber FROM Orders ORDER BY Company DESC, OrderNumber ASC

結果:

Company

OrderNumber

W3School

2356

W3School

6953

IBM

3532

Apple

4698

注意:在以上的結果中有兩個相等的公司名稱 (W3School)。只有這一次,在第一列中有相同的值時,第二列是以升序排列的。如果第一列中有些值為 nulls 時,情況也是這樣的。

Tags: