05-排序和分页

127 阅读1分钟

ASC 升序 DESC 降序

查询员工姓名和工资,按工资从多到少排序
SELECT last_name,salary FROM employees ORDER BY salary DESC

ORDER BY 可以使用别名

查询员工姓名和 12个月工资 别名annual_salary,按照12个月工资从多到小排序
SELECT last_name,salary * 12 as annual_salary  FROM employees ORDER BY annual_salary DESC

WHERE 条件不能使用别名

多字段排序

查询部门号从5080的员工姓名,部门号和工资,并按部门从大到小排序,工资从少到多排序.
SELECT last_name,department_id,salary FROM employees WHERE department_id BETWEEN 50 AND 80 ORDER BY department_id desc,salary asc

分页

SELECT ... FROM ... WHERE ... LIMIT (pageNo - 1) * pageSize,pageSize
每页10条,查询第1页,第一个参数为偏移量,第二个参数为多少条
SELECT * FROM employees LIMIT 0,10;

练习

#1. 查询员工的姓名和部门号和年薪,按年薪降序,按姓名升序显示

SELECT last_name,salary,department_id FROM employees ORDER BY salary DESC,last_name asc

#2. 选择工资不在 8000 到 17000 的员工的姓名和工资,按工资降序,显示第21到40位置的数据

SELECT employee_id,last_name,salary FROM employees WHERE salary NOT BETWEEN 8000 AND 17000 ORDER BY salary DESC LIMIT 20,20

#3. 查询邮箱中包含 e 的员工信息,并先按邮箱的字节数降序,再按部门号升序

SELECT last_name,email FROM employees WHERE email LIKE '%E%' ORDER BY length(email) DESC, department_id ASC