第二章 查询结果排序(SQL sever经典实例)
/****** SSMS 的 SelectTopNRows 命令的脚本 ******/
SELECT TOP (1000) [EMPNO]
,[ENAME]
,[JOB]
,[MCG]
,[HIREDATE]
,[SAL]
,[COMM]
,[DEPTNO]
FROM [Text_02].[dbo].[emp]
--以指定顺序返回查询结果
--显示部门编号为10的员工的姓名、职位和工资,并按工资低到高排序
select ename,job,sal from emp where deptno=10 order by sal asc
--asc 升序 desc 降序
select ename,job,sal from emp where deptno=10 order by sal desc
select ename,job,sal from emp where deptno=10 order by 3 desc
--3对应select列表的第三列,即sal列
--多字段排序
--先按deptno升序,再按sal降序
select empno ,deptno ,sal ,ename ,job from emp order by deptno , sal desc
--默认升序asc,可省
--根据子串排序
--按照职位字段的最后两个字符对检索结果进行排序
select ename ,job from emp order by substring(job, len(job)-2,2)
--排序时对null值进行处理
--非null值comm升序排列,全部null放在后面
select ename,sal,comm from
(select ename,sal,comm,
case when comm is null then 0 else 1 end as is_null --comm为null的行取别名is_null
from emp)x --内嵌式图x
order by is_null desc ,comm
--排序时对null值进行处理
--非null值comm升序排列,全部null放在后面
select ename,sal,comm from
(select ename,sal,comm,
case when comm is null then 0 else 1 end as is_null --comm为null的行取别名is_null
from emp)x --内嵌式图x
order by is_null ,comm desc
--依据条件逻辑动态调整排序项
select ename ,sal ,job, comm from emp
order by case when job='SALESMAN' then comm else sal end
select ename ,sal ,job, comm,
case when job='SALESMAN' then comm else sal end as ordered
from emp order by 5
1. 以指定顺序返回查询结果
2. 多字段排序
3. 根据子串排序
4. 排序时对null值进行处理
5. 依据条件逻辑动态调整排序项