SQL 多字段排序,针对 EMP
表的数据,你想先按照 DEPTNO
升序排列,然后再按照 SAL
降序排列。你希望返回如下所示的结果集。
SQL 多字段排序 问题
针对 EMP
表的数据,你想先按照 DEPTNO
升序排列,然后再按照 SAL
降序排列。你希望返回如下所示的结果集。
EMPNO DEPTNO SAL ENAME JOB
---------- ---------- ---------- ---------- ---------
7839 10 5000 KING PRESIDENT
7782 10 2450 CLARK MANAGER
7934 10 1300 MILLER CLERK
7788 20 3000 SCOTT ANALYST
7902 20 3000 FORD ANALYST
7566 20 2975 JONES MANAGER
7876 20 1100 ADAMS CLERK
7369 20 800 SMITH CLERK
7698 30 2850 BLAKE MANAGER
7499 30 1600 ALLEN SALESMAN
7844 30 1500 TURNER SALESMAN
7521 30 1250 WARD SALESMAN
7654 30 1250 MARTIN SALESMAN
7900 30 950 JAMES CLERK
SQL 多字段排序 解决方案
在 ORDER BY
子句中列出不同的排序列,以逗号分隔。
select empno,deptno,sal,ename,job
from emp
order by deptno, sal desc
SQL 多字段排序 扩展知识
ORDER BY
的执行顺序是从左到右的。如果使用 SELECT
列表项对应的位置序号来指定排序项,那么这个数字序号不能大于 SELECT
列表里的项目个数。一般而言,你也可以根据一个没有被包含在 SELECT
列表里的列来排序,但必须明确地指定列名。不过,如果你的查询语句里有 GROUP BY
或 DISTINCT
,那么就不能按照 SELECT
列表之外的列进行排序。