首頁 > 軟體

MySQL如何對資料進行排序圖文詳解

2022-08-05 18:01:42

一、 排序的基本使用

  1. 在查詢資料時,如果沒有使用排序操作,預設情況下SQL會按元組新增的順序來排列查詢結果。
  2. 在SQL中,使用關鍵字 ORDER BY... 來進行排序操作。在此關鍵字後面可以新增關鍵字 ASC (ascend) 表示升序排列 (從小到大) ,DESC (descend) 表示降序排列 (從大到小) 。
  3. 如果在 ORDER BY... 關鍵字後沒有新增 ASC 或 DESC 來指明升序還是降序排列,SQL會預設按照升序 ASC 排列。如下程式碼所示:
SELECT employee_id, last_name, salary
FROM employees
ORDER BY salary;

查詢結果:

【例子1】查詢員工表 employees 中的員工的 employee_idlast_namesalarydepartment_id 資訊。並按 salary 從大到小 (降序) 進行排列。

SELECT employee_id, last_name, salary
FROM employees
ORDER BY salary DESC;

查詢結果:

二、 使用列的別名來排序

在SQL中,可以使用欄位 (列) 的別名來進行排序。因為有時我們需要計算表中沒有的欄位 (如年薪 annual_salary ) ,或者有些欄位名字實在是太長了,使用簡短的別名可以提高我們程式設計的效率。如下例子所示:

【例子】查詢員工表 employees 中的員工的 employee_idlast_name 、月薪 salary 和 年薪 annual_salary 資訊。並按 annual_salary 從大到小 (降序) 進行排列。

SELECT employee_id, last_name, salary, 
salary * (1 + IFNULL(commission_pct, 0) * 12) AS "annual_salary"
FROM employees
ORDER BY annual_salary DESC;

查詢結果:

【注意】

  • 格式要求,WHERE 必須宣告在 FROM 後。
  • 列的別名只能在 ORDER BY... 中使用,不能在 WHERE 中使用。**如果在 WHERE 中使用列的別名,SQL會報錯。那為什麼MySQL中列的別名不能在 WHERE 中使用呢?原因如下:

【原因】

SELECT employee_id, last_name, department_id
FROM employees
WHERE department_id IN(50, 60, 70)
ORDER BY department_id DESC;
  • 在SQL中,查詢語句不是按照上述程式碼從第1行到第4行從上往下執行的。而是首先執行第2行 FROM... ,先去找要查詢的表。
  • 再執行第3行 WHERE... ,去篩選符合條件的元組。
  • 然後執行第1行 SELECT... ,顯示你要查詢的欄位。在這一步才會生成列的別名,自然無法提供給上一步的 WHERE 來使用。但是可以提供給下一步的 ORDER BY 來使用。
  • 最後才是第4行 ORDER BY... ,按某列排序。這個時候可以使用列的別名來進行排序。

查詢結果:

三、 二級排序

在現實生活中,我們有時候希望先按某個欄位排序,再按另一個欄位排序。在SQL中我們可以使用二級排序來實現。使用方法請看下面例子:

【例子1】查詢員工表 employees 中的員工的員工ID employee_id 、名字 last_name 、月薪 salary 和部門ID department_id 。並先按部門ID department_id 降序排列,再按 salary 從大到小 (降序) 進行排列。

SELECT employee_id, last_name, salary, department_id
FROM employees
ORDER BY department_id DESC, salary DESC;

查詢結果:

依次類推,可以在 ORDER BY 後面加逗號,來實現三級、四級…排序。

總結

到此這篇關於MySQL如何對資料進行排序的文章就介紹到這了,更多相關MySQL資料排序內容請搜尋it145.com以前的文章或繼續瀏覽下面的相關文章希望大家以後多多支援it145.com!


IT145.com E-mail:sddin#qq.com