在mysql中,可以利用“select”語句和“ORDER BY”關鍵字實現升序查詢,語法“SELECT {*|字段列名} FROM 表名 [WHERE 條件] GROUP BY 字段名 ASC;”。
本教程操作環境:windows7系統、mysql8版本、Dell G3電腦。
在mysql中,可以利用“SELECT”語句和“ORDER BY”關鍵字實現升序查詢。
SELECT 語句用于查詢數據,ORDER BY 關鍵字主要用來將查詢結果中的數據按照一定的順序進行排序。
基本語法:
SELECT?{*|字段列名}?FROM?表名?[WHERE?條件]?GROUP?BY?字段名?[ASC|DESC];
語法說明如下。
-
字段名:表示需要排序的字段名稱,多個字段時用逗號隔開。
-
ASC|DESC:ASC表示字段按升序排序;DESC表示字段按降序排序。其中ASC為默認值。
使用 ORDER BY 關鍵字應該注意以下幾個方面:
-
ORDER BY 關鍵字后可以跟子查詢(關于子查詢后面教程會詳細講解,這里了解即可)。
-
當排序的字段中存在空值時,ORDER BY 會將該空值作為最小值來對待。
-
ORDER BY 指定多個字段進行排序時,MySQL 會按照字段的順序從左到右依次進行排序。
單字段排序
下面通過一個具體的實例來說明當 ORDER BY 指定單個字段時,MySQL 如何對查詢結果進行排序。
例 1
下面查詢 tb_students_info 表的所有記錄,并對 height 字段進行排序,SQL 語句和運行結果如下。
mysql>?SELECT?*?FROM?tb_students_info?ORDER?BY?height; +----+--------+---------+------+------+--------+------------+ |?id?|?name???|?dept_id?|?age??|?sex??|?height?|?login_date?| +----+--------+---------+------+------+--------+------------+ |??2?|?Green??|???????3?|???23?|?F????|????158?|?2016-10-22?| |??1?|?Dany???|???????1?|???25?|?F????|????160?|?2015-09-10?| |??4?|?Jane???|???????1?|???22?|?F????|????162?|?2016-12-20?| |??7?|?Lily???|???????6?|???22?|?F????|????165?|?2016-02-26?| |?10?|?Tom????|???????4?|???23?|?M????|????165?|?2016-08-05?| |??8?|?Susan??|???????4?|???23?|?F????|????170?|?2015-10-01?| |??6?|?John???|???????2?|???21?|?M????|????172?|?2015-11-11?| |??5?|?Jim????|???????1?|???24?|?M????|????175?|?2016-01-15?| |??9?|?Thomas?|???????3?|???22?|?M????|????178?|?2016-06-07?| |??3?|?Henry??|???????2?|???23?|?M????|????185?|?2015-05-31?| +----+--------+---------+------+------+--------+------------+ 10?rows?in?set?(0.08?sec)
由結果可以看到,MySQL 對查詢的 height 字段的數據按數值的大小進行了升序排序。
多字段排序
下面通過一個具體的實例來說明當 ORDER BY 指定多個字段時,MySQL 如何對查詢結果進行排序。
例 2
查詢 tb_students_info 表中的 name 和 height 字段,先按 height 排序,再按 name 排序,SQL 語句和運行結果如下。
mysql>?SELECT?name,height?FROM?tb_students_info?ORDER?BY?height,name; +--------+--------+ |?name???|?height?| +--------+--------+ |?Green??|????158?| |?Dany???|????160?| |?Jane???|????162?| |?Lily???|????165?| |?Tom????|????165?| |?Susan??|????170?| |?John???|????172?| |?Jim????|????175?| |?Thomas?|????178?| |?Henry??|????185?| +--------+--------+ 10?rows?in?set?(0.09?sec)
注意:在對多個字段進行排序時,排序的第一個字段必須有相同的值,才會對第二個字段進行排序。如果第一個字段數據中所有的值都是唯一的,MySQL 將不再對第二個字段進行排序。
默認情況下,查詢數據按字母升序進行排序(A~Z),但數據的排序并不僅限于此,還可以使用 ORDER BY 中的 DESC 對查詢結果進行降序排序(Z~A)。
例 3
查詢 tb_students_info 表,先按 height 降序排序,再按 name 升序排序,SQL 語句和運行結果如下。
mysql>?SELECT?name,height?FROM?tb_student_info?ORDER?BY?height?DESC,name?ASC; +--------+--------+ |?name???|?height?| +--------+--------+ |?Henry??|????185?| |?Thomas?|????178?| |?Jim????|????175?| |?John???|????172?| |?Susan??|????170?| |?Lily???|????165?| |?Tom????|????165?| |?Jane???|????162?| |?Dany???|????160?| |?Green??|????158?| +--------+--------+ 10?rows?in?set?(0.00?sec)
DESC 關鍵字只對前面的列進行降序排列,在這里只對 height 字段進行降序。因此,height 按降序排序,而 name 仍按升序排序。如果想在多個列上進行降序排序,必須對每個列指定 DESC 關鍵字。
【相關推薦:mysql視頻教程】