排序查詢
引入:
? ? ? ? select *from employees;
語法:
? ? ? ? select 查詢列表
? ? ? ? from 表
? ? ? ? 【where 篩選條件】
? ? ? ? order by 排序列表 【asc|desc】
特點(diǎn):
? ? ? ? 1、asc代表的是升序,desc代表的是降序
? ? ? ? ? ? 如果不寫,默認(rèn)是升序;
? ? ? ? 2、order by子句中可以支持單個字段、多個字段、表達(dá)式、函數(shù)、別名;
? ? ? ? 3、order by子句一般是放在查詢語句的最后面,limit子句除外。
例1:查詢員工信息,要求工資從高到低排序
SELECT * FROM employees ORDER BY salary DESC;

降序的話把 dese改成asc即可
SELECT * FROM employees ORDER BY salary ASC;

例2:查詢部門編號>=90的員工信息,按入職時間的先后進(jìn)行排序【添加篩選條件】
SELECT
? *
FROM
? employees
WHERE department_id >= 90
ORDER BY hiredate ASC;

例3:按年薪的高低顯示員工的信息和 年薪【按表達(dá)式排序】
SELECT *,salary*12*(1+IFNULL(commission_pct,0))年薪
FROM employees
ORDER BY salary*12*(1+IFNULL(commission_pct,0)) DESC;

例4:按年薪的高低顯示員工的信息和 年薪【按別名排序】
SELECT *,salary*12*(1+IFNULL(commission_pct,0))年薪
FROM employees
ORDER BY 年薪 DESC;

從這個例子中可以知道 排序是支持別名的
例5:按名字的長度顯示員工的姓名和工資【按函數(shù)排序】
SELECT LENGTH(last_name)字節(jié)長度,last_name,salary
FROM employees
ORDER BY LENGTH(last_name) DESC;

例6:查詢員工信息,要求先按工資排序,再按員工編號排序【按多個字段排序】
SELECT *
FROM employees
ORDER BY salary ASC,employee_id DESC;

在這個例子中,多字段排序時salary是按升序排的,而employee_id是按降序排的,但是因為在這個查詢語句中salary寫在前面,即先按寫在前面的進(jìn)行排序,在排到同樣的值的時候,再通過第二個條件進(jìn)行排序。