2.6 根据数据项的键排序
Q: 针对某条件逻辑排序,如: job = 'SALESMAN' 按照 comm 排序,否则根据 sal 排序
A: 使用 case 表达式来动态改变如何对结果排序
select ename, sal, job, comm
from emp
order by case when job = 'SALESMAN' then comm else sal end
ename | sal | job | comm
--------+------+-----------+------
TURNER | 1500 | SALESMAN | 0
ALLEN | 1600 | SALESMAN | 300
WARD | 1250 | SALESMAN | 500
SMITH | 800 | CLERK |
JAMES | 950 | CLERK |
ADAMS | 1100 | CLERK |
MILLER | 1300 | CLERK |
MARTIN | 1250 | SALESMAN | 1400
CLARK | 2450 | MANAGER |
BLAKE | 2850 | MANAGER |
JONES | 2975 | MANAGER |
SCOTT | 3000 | ANALYST |
FORD | 3000 | ANALYST |
KING | 5000 | PRESIDENT |
(14 rows)
Tables Used:
for MySQL
--EOF--