MySQL 之對查詢結果進行排序(SELECT...ORDER BY)


定義:

在 MySQL SELECT 語句中,ORDER BY 子句主要用來將結果集中的數據按照一定的順序進行排序。

其語法格式為:


SELECT <字段>[,..<字段n>] FROM <數據表名>

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

語法說明如下。

1) 列名

指定用於排序的列。可以指定多個列,列名之間用逗號分隔。

2) 表達式

指定用於排序的表達式。

3) 位置

指定用於排序的列在 SELECT 語句結果集中的位置,通常是一個正整數。

4) ASC|DESC

關鍵字 ASC 表示按升序分組,關鍵字 DESC 表示按降序分組,其中 ASC 為默認值。這兩個關鍵字必須位於對應的列名、表達式、列的位置之后。

使用 ORDER BY 子句應該注意以下幾個方面:

  • ORDER BY 子句中可以包含子查詢。
  • 當排序的值中存在空值時,ORDER BY 子句會將該空值作為最小值來對待。
  • 當在 ORDER BY 子句中指定多個列進行排序時,MySQL 會按照列的順序從左到右依次進行排序。
  • 查詢的數據並沒有以一種特定的順序顯示,如果沒有對它們進行排序,則將根據插入到數據表中的順序顯示。使用 ORDER BY 子句對指定的列數據進行排序。


【實例 1】查詢 tb_students_info 表的 height 字段值,並對其進行排序,輸入的 SQL 語句和執行結果如下所示。

 

 以上查詢未指定排序的方法,則按照默認的ASC升序進行排序;

有時需要根據多列進行排序。對多列數據進行排序要將需要排序的列之間用逗號隔開。

【實例 2】查詢 tb_students_info 表中的 name 和 height 字段,先按 height 排序,再按 name 排序,輸入的 SQL 語句和執行結果如下所示。

1、只對height進行排序時如下:

 

 2、先對height進行排序,再對name進行排序,查詢結果如下:

 

 以上查詢結果顯示,只對height進行排序時,Dany排在Anna的前面;將對height和name都進行排序時Anna排在了前面;

提示:前提條件:先排序的height列中Anna和Dany 的height值都是160,所以先進行了height排序,再進行name排序。

注意:在對多列進行排序時,首行排序的第一列必須有相同的列值,才會對第二列進行排序。如果第一列數據中所有的值都是唯一的,將不再對第二列進行排序。

默認情況下,查詢數據按字母升序進行排序(A~Z),但數據的排序並不僅限於此,還可以使用 ORDER BY 對查詢結果進行降序排序(Z~A),這可以通過關鍵字 DESC 實現。可以對多列進行不同的順序排序。

【實例 3】查詢 tb_students_info 表,先按 height 降序排序,再按 name 升序排序,輸入的 SQL 語句和執行過程如下所示。

注意:DESC 關鍵字只對前面的列進行降序排列,在這里只對 height 排序,而並沒有對 name 進行排序,因此,height 按降序排序,而 name 仍按升序排序,如果要對多列進行降序排序,必須要在每一列的后面加 DESC 關鍵字。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM