1. 程式人生 > >SQL 檢索排序資料(ORDER BY子句)

SQL 檢索排序資料(ORDER BY子句)

ORDER BY 子句用於對結果集按照一個列或者多個列進行排序。

ORDER BY 子句預設按照升序對記錄進行排序。如果需要按照降序對記錄進行排序,您可以使用 DESC 關鍵字。

注意:ORDER BY 子句應該位於FROM子句之後,若使用LIMIT關鍵字時,LIMIT關鍵字必須要位於ORDER BY子句之後。

升序排序

升序排序(從小到大)為ORDER BY 預設排序方式,也可以在SQL語句中指明使用升序排序,使用 ASC 關鍵字。命令:

SELECT 列名1,列名2,…… FROM 表名 ORDER BY 列名(根據哪一列進行排序);
或
SELECT 列名1,列名2,…… FROM 表名 ORDER BY 列名(根據哪一列進行排序) ASC;

降序排序

降序排序(從大到小),使用DESC關鍵字。命令:

SELECT 列名1,列名2,…… FROM 表名 ORDER BY 列名(根據哪一列進行排序) DESC;

按照多個列進行排序

按多個列進行排序,只要指定列名,列名之間用逗號分開即可。

若果想要對多個列進行降序排序,必須對每個列指定DESC關鍵字,若不指定DESC則為預設排序方式(升序排序)。

命令:

SELECT 列名1,列名2,…… FROM 表名 ORDER BY 列名1,列名2,……;

注意:首先按照 列名1 進行排序,然後在按照 列名2 進行排序(當列名1有重複時才起作用,否則無效),需排序列依次類推,若 列名1 中所有的值都是唯一的,則不會按照 列名2 進行排序。

例如:(檢索city表所有,按照id 和 name進行預設排序)SELECT * from city ORDER BY id, name;排序首先按照 id 進行排序,當id有重複時才對 name 進行排序,若 id 中所有的值都是唯一的,則不會按照 name 進行排序。

 指定排序方向

如果想要指定每個列的排序方向,必須對每個列指定是降序排序還是升序排序(預設為升序排序,不需要指定ASC關鍵字,只需要寫出列名即可),若不指定則預設為升序排序0。

命令:

SELECT 列名1,列名2,…… FROM 表名 ORDER BY 列名1 DESC,列名2,……;