MySQL如何對數據進行排序圖文詳解

一、 排序的基本使用

  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;

查詢結果:

image-20220627191058102

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

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

查詢結果:

image-20220627190650878

二、 使用列的別名來排序

在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;

查詢結果:

image-20220627192103867

【註意】

  • 格式要求,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… ,按某列排序。這個時候可以使用列的別名來進行排序。

查詢結果:

image-20220627192932393

三、 二級排序

在現實生活中,我們有時候希望先按某個字段排序,再按另一個字段排序。在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;

查詢結果:

image-20220627195008915

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

總結

到此這篇關於MySQL如何對數據進行排序的文章就介紹到這瞭,更多相關MySQL數據排序內容請搜索WalkonNet以前的文章或繼續瀏覽下面的相關文章希望大傢以後多多支持WalkonNet!

推薦閱讀: