首頁  >  文章  >  資料庫  >  mysql怎麼實作查詢並排序

mysql怎麼實作查詢並排序

青灯夜游
青灯夜游原創
2021-12-03 18:36:3416746瀏覽

在mysql中,可以利用SELECT語句和「ORDER BY」關鍵字來實作查詢排序功能,語法「SELECT * FROM 資料表名ORDER BY 欄位名稱[ASC|DESC]」;如果設定「ASC 」則可升序排序,「DESC」則可降序排序。

mysql怎麼實作查詢並排序

本教學操作環境:windows7系統、mysql8版本、Dell G3電腦。

在mysql中,可以利用SELECT語句和「ORDER BY」關鍵字實作查詢排序效果。

SELECT 語句可以查詢數據,而ORDER BY關鍵字可以將查詢結果中的資料依照一定的順序排序

語法:

SELECT * FROM 数据表名 ORDER BY 字段名 [ASC|DESC]

語法說明如下。

  • 欄位名稱:表示需要排序的欄位名稱,多個欄位時用逗號隔開。

  • ASC|DESCASC表示欄位依升序排序;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中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn