问题:要根据某些条件逻辑来排序。例如,如果JOB是”SALESMAN”,要根据comm来排序。
解决方案:在order by子句中使用case表达式
select ename,sal,job,comm from emp
order by case when job = 'SALESMAN' then comm else sal end
讨论:
可以使用 case表达式来动态改变如何对结果排序。传递给order by 的值类似这样:
select ename,sal,job,comm,
case when job = 'SALESMAN' then comm else sal end as ordered
from emp
order by 5