日韩av黄I国产麻豆传媒I国产91av视频在线观看I日韩一区二区三区在线看I美女国产在线I麻豆视频国产在线观看I成人黄色短片

歡迎訪問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) >

MySQL ORDER BY:对查询结果进行排序

發(fā)布時(shí)間:2025/3/20 36 豆豆
生活随笔 收集整理的這篇文章主要介紹了 MySQL ORDER BY:对查询结果进行排序 小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

在 MySQL SELECT 語(yǔ)句中,ORDER BY 子句主要用來(lái)將結(jié)果集中的數(shù)據(jù)按照一定的順序進(jìn)行排序。

?

其語(yǔ)法格式為:

ORDER BY {<列名> | <表達(dá)式> | <位置>} [ASC|DESC]

語(yǔ)法說(shuō)明如下。

1) 列名

指定用于排序的列。可以指定多個(gè)列,列名之間用逗號(hào)分隔。

2) 表達(dá)式

指定用于排序的表達(dá)式。

3) 位置

指定用于排序的列在 SELECT 語(yǔ)句結(jié)果集中的位置,通常是一個(gè)正整數(shù)。

4) ASC|DESC

關(guān)鍵字?ASC?表示按升序分組,關(guān)鍵字?DESC?表示按降序分組,其中?ASC?為默認(rèn)值。這兩個(gè)關(guān)鍵字必須位于對(duì)應(yīng)的列名、表達(dá)式、列的位置之后。

使用 ORDER BY 子句應(yīng)該注意以下幾個(gè)方面:

  • ORDER BY 子句中可以包含子查詢。
  • 當(dāng)排序的值中存在空值時(shí),ORDER BY 子句會(huì)將該空值作為最小值來(lái)對(duì)待。
  • 當(dāng)在 ORDER BY 子句中指定多個(gè)列進(jìn)行排序時(shí),MySQL 會(huì)按照列的順序從左到右依次進(jìn)行排序。
  • 查詢的數(shù)據(jù)并沒(méi)有以一種特定的順序顯示,如果沒(méi)有對(duì)它們進(jìn)行排序,則將根據(jù)插入到數(shù)據(jù)表中的順序顯示。使用 ORDER BY 子句對(duì)指定的列數(shù)據(jù)進(jìn)行排序。

【實(shí)例 1】查詢 tb_students_info 表的 height 字段值,并對(duì)其進(jìn)行排序,輸入的 SQL 語(yǔ)句和執(zhí)行結(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)

該語(yǔ)句通過(guò)指定 ORDER BY 子句,MySQL 對(duì)查詢的 height 列的數(shù)據(jù)按數(shù)值的大小進(jìn)行了升序排序。

有時(shí)需要根據(jù)多列進(jìn)行排序。對(duì)多列數(shù)據(jù)進(jìn)行排序要將需要排序的列之間用逗號(hào)隔開(kāi)。

【實(shí)例 2】查詢 tb_students_info 表中的 name 和 height 字段,先按 height 排序,再按 name 排序,輸入的 SQL 語(yǔ)句和執(zhí)行結(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ì)多列進(jìn)行排序時(shí),首行排序的第一列必須有相同的列值,才會(huì)對(duì)第二列進(jìn)行排序。如果第一列數(shù)據(jù)中所有的值都是唯一的,將不再對(duì)第二列進(jìn)行排序。

默認(rèn)情況下,查詢數(shù)據(jù)按字母升序進(jìn)行排序(A~Z),但數(shù)據(jù)的排序并不僅限于此,還可以使用 ORDER BY 對(duì)查詢結(jié)果進(jìn)行降序排序(Z~A),這可以通過(guò)關(guān)鍵字 DESC 實(shí)現(xiàn)。可以對(duì)多列進(jìn)行不同的順序排序。

【實(shí)例 3】查詢 tb_students_info 表,先按 height 降序排序,再按 name 升序排序,輸入的 SQL 語(yǔ)句和執(zhí)行過(guò)程如下所示。

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)行降序排列,已經(jīng)為大家精心準(zhǔn)備了大數(shù)據(jù)的系統(tǒng)學(xué)習(xí)資料,從Linux-Hadoop-spark-......,需要的小伙伴可以點(diǎn)擊在這里只對(duì) height 排序,而并沒(méi)有對(duì) name 進(jìn)行排序,因此,height 按降序排序,而 name 仍按升序排序,如果要對(duì)多列進(jìn)行降序排序,必須要在每一列的后面加 DESC 關(guān)鍵字。

總結(jié)

以上是生活随笔為你收集整理的MySQL ORDER BY:对查询结果进行排序的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

如果覺(jué)得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。