问题
你想根据某种条件逻辑选择排序依据。如果 JOB 列为Programmer,就根据 DEPTNO列排序,否则根据 SAL 排序。
解决方案
在 ORDER BY 子句中使用 CASE 表达式。
select name, salary, job, deptno
from emp
order by case when job = 'Programmer' then deptno else salary end;
扩展
可以使用 CASE 表达式动态地修改结果集排序方式。传递给 ORDER BY 子句的值如下所示。
select name, salary, job, deptno, case when job = 'Programmer' then deptno else salary end as ordered
from emp
order by 5;
点个赞吧,这对我非常重要!