SQL经典实例(二)查询结果排序
程序员文章站
2022-04-16 10:29:42
...
1.以指定顺序返回查询结果
#deptno为10,根据工资从低到高排序
select ename,job,sal
from emp
where deptno = 10
order by sal asc
--降序
-- order by sal desc
--数值代替列
--order by 3 desc
结果:
2.多字段排序
--emp表里的数据,先按照deptno升序,再按照sal降序排列
select empno,deptno,sal,ename,job
from emp
order by deptno,sal desc
结果:
3.依据字串排序
select ename,job
from emp
order by substring(job,len(job)-2,2)
--(列名,起始位置,字符串长度)
结果:
4.排序时对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
from emp
)x --内嵌式图
order by is_null desc,comm
--非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
from emp
)x
order by is_null desc,comm desc
--非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
from emp
)x
order by is_null ,comm
--非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
from emp
)x
order by is_null ,comm desc
结果:
5.依据条件逻辑动态调整排序项
--如果job等于SALESMAN,按照comm来排序;否则按照sal排序
select ename,sal,job,comm
from emp
order by case when job ='SALESMAN'then comm else sal end
--or
select ename,sal,job,comm,
case when job = 'SALESMAN' then comm else sal end as ordered
from emp
order by 5
结果:
推荐阅读
-
数据库(SQL Server )经典例题(二):对S表、P表、J表、SPJ表的操作——单表查询
-
《SQL CookBook 》笔记-第二章-查询结果排序
-
数据库查询排序使用随机排序结果示例(Oracle/MySQL/MS SQL Server)
-
SQL Server将自己的查询结果作为待查询数据子列之二
-
thinkphp 3.2框架视图模型 实例视图查询结果的二维数组合并操作示例
-
SQL查询结果自定义排序
-
Cannot resolve the collation conflict between "Chinese_PRC_CI_AS" and "SQL_L及由于排序规则不同导致查询结果为空的问题
-
order by排序的字段的值相等,导致两个sql查询出来的显示结果不一样
-
mybatis相同的sql查询第二次查不出结果问题
-
SQL2005 高效分页sql查询语句经典实例