在mysql中,可以利用SELECT語句和「ORDER BY」關鍵字來實作查詢排序功能,語法「SELECT * FROM 資料表名ORDER BY 欄位名稱[ASC|DESC]」;如果設定「ASC 」則可升序排序,「DESC」則可降序排序。
本教學操作環境:windows7系統、mysql8版本、Dell G3電腦。
在mysql中,可以利用SELECT
語句和「ORDER BY
」關鍵字實作查詢排序效果。
SELECT
語句可以查詢數據,而ORDER BY
關鍵字可以將查詢結果中的資料依照一定的順序排序
語法:
SELECT * FROM 数据表名 ORDER 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影片教學】#
以上是mysql怎麼實作查詢並排序的詳細內容。更多資訊請關注PHP中文網其他相關文章!