iT邦幫忙

第 11 屆 iThome 鐵人賽

DAY 18
1
Modern Web

淺談資料庫&ASP.net&C# 入門系列 第 18

[iT鐵人賽Day18]SQL語法-排序Order by

使用Select查出想要的資料後,假如想要使資料排序由小到大或是由大到小,這時候就需要使用Order by這個指令來做排序。

資料排序 Order By

將資料做排序有兩個關鍵字:

  1. asc 遞增(由小到大)
  2. desc 遞減(由大到小)

使用order by不只是數值的大小做排序,也可以是時間的久遠或英文(a-z)的大小或者文字的筆畫來做排序。

用法:

SELECT "欄位名稱"
FROM "資料表名稱"
[WHERE "條件"]
ORDER BY "欄位名稱" [ASC or DESC];

Order by條件是可以多個的

但假如以欄位名稱1排序後,有三個名稱重複一樣,oder by後可以再用,做區隔後繼續 欄位名稱2 加上 ASC or DESC排序,若排序後還是一樣無發比較高下的話可再第三個 欄位名稱3排序以此類推,但會越前面的排序為優先。

作法如下:

ORDER BY "欄位名稱1" [ASC or DESC],"欄位名稱2" [ASC or DESC],"欄位名稱3" [ASC or DESC],...;

以student資料表來做order by的範例:

https://ithelp.ithome.com.tw/upload/images/20190918/20119925jYeuBF3YA2.png

現在要以id來進行遞減的排序並顯示出學生姓名

SELECT   學生
FROM     student
ORDER BY id DESC

顯示結果依照id大小,從最大(京帥 id=8)排列到最小(Mark id=1)。結果如下:

https://ithelp.ithome.com.tw/upload/images/20190918/20119925hM9RiVFzux.png

那麼現在要以學生姓名來進行遞增。

SELECT   學生
FROM     student
ORDER BY 學生 ASC

顯示結果先由英文排序到中文,而英文從字母的先後順序開始遞增,中文則是依照筆畫來做遞增。結果如下:

https://ithelp.ithome.com.tw/upload/images/20190918/2011992532IUS0Gx0m.png

使用工具精靈產生Order By的SQL

對資料庫新增查詢後,右鍵在編輯器中查詢設計,選擇想要的資料表(作法與前幾篇SQL小精靈一樣),在排序類型那兒的下拉選單就可以對欄位做遞增或遞減了,而SQL就會在下方,確定後就可執行了(也可以對不想顯示的欄位做排序唷><)。

https://ithelp.ithome.com.tw/upload/images/20190919/20119925rqjC9ZfxS2.png


上一篇
[iT鐵人賽Day17]SQL語法-集合運算Union 、Intersect 、Except
下一篇
[iT鐵人賽Day19]SQL語法-常用的聚合函數 COUNT()、AVG() 、MAX() 、MIN()、 SUM()
系列文
淺談資料庫&ASP.net&C# 入門36
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

1 則留言

1
小朱
iT邦新手 4 級 ‧ 2019-09-19 14:25:20

順便提一下,ORDER BY 的條件是可以多個。
例如 ORDER BY RegisterDate DESC, Price ASC, Discount DESC

捲毛蔡 iT邦新手 4 級 ‧ 2019-09-19 16:31:26 檢舉

感謝朱老師的補充說明>< 立刻補上

我要留言

立即登入留言