您好,登錄后才能下訂單哦!
這篇文章主要介紹“MySQL怎么對數據進行排序”的相關知識,小編通過實際案例向大家展示操作過程,操作方法簡單快捷,實用性強,希望這篇“MySQL怎么對數據進行排序”文章能幫助大家解決問題。
在查詢數據時,如果沒有使用排序操作,默認情況下SQL會按元組添加的順序來排列查詢結果。
在SQL中,使用關鍵字 ORDER BY... 來進行排序操作。在此關鍵字后面可以添加關鍵字 ASC (ascend) 表示升序排列 (從小到大) ,DESC (descend) 表示降序排列 (從大到小) 。
如果在 ORDER BY... 關鍵字后沒有添加 ASC 或 DESC 來指明升序還是降序排列,SQL會默認按照升序 ASC 排列。如下代碼所示:
SELECT employee_id, last_name, salary FROM employees ORDER BY salary;
查詢結果:
【例子1】查詢員工表 employees
中的員工的 employee_id
、last_name
、salary
和 department_id
信息。并按 salary
從大到小 (降序) 進行排列。
SELECT employee_id, last_name, salary FROM employees ORDER BY salary DESC;
查詢結果:
在SQL中,可以使用字段 (列) 的別名來進行排序。因為有時我們需要計算表中沒有的字段 (如年薪 annual_salary
) ,或者有些字段名字實在是太長了,使用簡短的別名可以提高我們編程的效率。如下例子所示:
【例子】查詢員工表 employees
中的員工的 employee_id
、last_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怎么對數據進行排序”的內容就介紹到這里了,感謝大家的閱讀。如果想了解更多行業相關的知識,可以關注億速云行業資訊頻道,小編每天都會為大家更新不同的知識點。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。