1.排序查询
1 # 1.语法
2 select查询列表from表where筛选条件 order by排序列表[asc|desc]
3 # 2.特点说明:
4 1).asc代表按排序字段升序查询, desc代表按排序字段降序查询,如果不写默认升序
5 2).order by子句支持单个字段,多个字段,表达式,函数,别名进行排序
6 3).order by子句一般是放在查询语句的最后面的,但limit子句除外
7 # 3.执行顺序:
8 from-->where-->select--> order by
返回顶部
2.查询小示例
1 # 1.查询员工信息, 要求工资从高到低排序
2 select*from employees order by salary desc;
3 # 2.查询部门编号>=90的员工信息, 按入职时间降序排列.
4 select*from employees where department_id >=90 order by hiredate desc
5 # 3.按年薪的高低显示员工信息和年薪(按表达式排序, order by 支持别名排序)
6 select * , salary*12*(1+ifnull(commission_pct,0))as 年薪
7 from employees
8 order by 年薪 desc;
9 # 4.按姓名的长度从长到短显示员工的名字, 名字长处和工资(按函数与排序)
10 select last_name, length(last_name),salary
11 from employees
12 order by length(last_name) desc;
13 # 5.查询员工信息, 要求先按工资升序, 在按员工编号降序(多字段排序)
14 select *
15 from employees
16 order by salary asc, employee_id desc;
17 # 注:多字段排序时, 会按第一个排序的字段先进行排序, 如果第一个字段有两条或两个以上记录值相同, 则这几条记录之间按第二个排序的字段进行排序, 以此类推.
返回顶部
3.小练习—SQL语句编写
1 # 1.查询员工的姓名和部门号和年薪, 按年薪降序排序, 按姓名升序排序
2 select last_name, department_id, salary*12*(1+ifnull(commission_pct,0))as年薪
3 from employees
4 order by年薪 desc, last_name asc;
5 # 2.选择工资不在8000到17000之间的员工的姓名和工资, 按工资降序
6 select last_name, salary
7 from employees
8 where salary not between 8000and1700
9 order by salary desc;
10 # 3. 查询邮箱中包含e的员工信息, 并先按邮箱的字节数降序, 再按部门号升序
11 select*
12 from employees
13 where email like '%e%'
14 order by length(email) desc, department_id asc
返回顶部