首頁  >  文章  >  資料庫  >  MySQL怎麼對資料進行排序

MySQL怎麼對資料進行排序

WBOY
WBOY轉載
2023-05-30 22:10:575162瀏覽

一、排序的基本使用

  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;

查詢結果:

MySQL怎麼對資料進行排序

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

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

查詢結果:

MySQL怎麼對資料進行排序

二、 使用列的別名來排序

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

查詢結果:

MySQL怎麼對資料進行排序

【注意】

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

查詢結果:

MySQL怎麼對資料進行排序

三、二級排序

在實際生活中,有時候我們需要在按照一個欄位排序後再按照另一個欄位排序。在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;

查詢結果:

MySQL怎麼對資料進行排序

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

以上是MySQL怎麼對資料進行排序的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文轉載於:yisu.com。如有侵權,請聯絡admin@php.cn刪除