新聞中心
通過條件查詢語句可以查詢到符合用戶需求的數(shù)據(jù),但是查詢到的數(shù)據(jù)一般都是按照數(shù)據(jù)最初被添加到表中的順序來顯示。為了使查詢結(jié)果的順序滿足用戶的要求,MySQL 提供了
ORDER BY 關(guān)鍵字來對(duì)查詢結(jié)果進(jìn)行排序。

我們提供的服務(wù)有:成都網(wǎng)站制作、成都網(wǎng)站建設(shè)、微信公眾號(hào)開發(fā)、網(wǎng)站優(yōu)化、網(wǎng)站認(rèn)證、松山ssl等。為千余家企事業(yè)單位解決了網(wǎng)站和推廣的問題。提供周到的售前咨詢和貼心的售后服務(wù),是有科學(xué)管理、有技術(shù)的松山網(wǎng)站制作公司
在實(shí)際應(yīng)用中經(jīng)常需要對(duì)查詢結(jié)果進(jìn)行排序,比如,在網(wǎng)上購(gòu)物時(shí),可以將商品按照價(jià)格進(jìn)行排序;在醫(yī)院的掛號(hào)系統(tǒng)中,可以按照掛號(hào)的先后順序進(jìn)行排序等。
ORDER BY 關(guān)鍵字主要用來將查詢結(jié)果中的數(shù)據(jù)按照一定的順序進(jìn)行排序。其語法格式如下:
ORDER BY <字段名> [ASC|DESC]
語法說明如下。
- 字段名:表示需要排序的字段名稱,多個(gè)字段時(shí)用逗號(hào)隔開。
- ASC|DESC:
ASC表示字段按升序排序;DESC表示字段按降序排序。其中ASC為默認(rèn)值。
使用 ORDER BY 關(guān)鍵字應(yīng)該注意以下幾個(gè)方面:
- ORDER BY 關(guān)鍵字后可以跟子查詢(關(guān)于子查詢后面教程會(huì)詳細(xì)講解,這里了解即可)。
- 當(dāng)排序的字段中存在空值時(shí),ORDER BY 會(huì)將該空值作為最小值來對(duì)待。
- ORDER BY 指定多個(gè)字段進(jìn)行排序時(shí),MySQL 會(huì)按照字段的順序從左到右依次進(jìn)行排序。
單字段排序
下面通過一個(gè)具體的實(shí)例來說明當(dāng) ORDER BY 指定單個(gè)字段時(shí),MySQL 如何對(duì)查詢結(jié)果進(jìn)行排序。
例 1
下面查詢 tb_students_info 表的所有記錄,并對(duì) height 字段進(jìn)行排序,SQL 語句和運(yùn)行結(jié)果如下。
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)
由結(jié)果可以看到,MySQL 對(duì)查詢的 height 字段的數(shù)據(jù)按數(shù)值的大小進(jìn)行了升序排序。
多字段排序
下面通過一個(gè)具體的實(shí)例來說明當(dāng) ORDER BY 指定多個(gè)字段時(shí),MySQL 如何對(duì)查詢結(jié)果進(jìn)行排序。
例 2
查詢 tb_students_info 表中的 name 和 height 字段,先按 height 排序,再按 name 排序,SQL 語句和運(yùn)行結(jié)果如下。
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)
注意:在
對(duì)多個(gè)字段進(jìn)行排序時(shí),排序的第一個(gè)字段必須有相同的值,才會(huì)對(duì)第二個(gè)字段進(jìn)行排序。如果第一個(gè)字段數(shù)據(jù)中所有的值都是唯一的,MySQL 將不再對(duì)第二個(gè)字段進(jìn)行排序。
默認(rèn)情況下,查詢數(shù)據(jù)按字母升序進(jìn)行排序(A~Z),但數(shù)據(jù)的排序并不僅限于此,還可以使用 ORDER BY 中的 DESC 對(duì)查詢結(jié)果進(jìn)行降序排序(Z~A)。
例 3
查詢 tb_students_info 表,先按 height 降序排序,再按 name 升序排序,SQL 語句和運(yùn)行結(jié)果如下。
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 關(guān)鍵字只對(duì)前面的列進(jìn)行降序排列,在這里只對(duì) height 字段進(jìn)行降序。因此,height 按降序排序,而 name 仍按升序排序。如果想在多個(gè)列上進(jìn)行降序排序,必須對(duì)每個(gè)列指定 DESC 關(guān)鍵字。
當(dāng)前文章:創(chuàng)新互聯(lián)數(shù)據(jù)庫(kù)教程:MySQL ORDER BY:對(duì)查詢結(jié)果排序
分享鏈接:http://www.5511xx.com/article/dposjse.html


咨詢
建站咨詢
