SQL Cookbook:二、查询结果排序(2)按多个字段排序

 问题

    在EMP表中,首先按照DEPTNO的升序排序,然后按照工资的降序排序,结果集应该如下所示:

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

解决方案

    在ORDER BY子句中列出不同的排序列,使用逗号分隔:

select empno,deptno,sal,ename,job
from emp
order by deptno, sal desc

 

讨论

    在ORDER BY中,优先次序是从左到右。如果在SELECT列表中使用列的数字位置进行排序,那么这个数值必须不能大于SELECT列表中项目的数目。一般情况下都可以执照SELECT列表中没有的列来排序,但是必须显式地给出排序的列名。如果在查询中使用GROUP BY或DISTINCT则不能按照SELECT列表中没有的列来排序。

版权说明:作者:张颖希PocketZ's Blog
出处:http://www.cnblogs.com/PocketZ
本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。

本文翻译内容取自网络,纯粹是练习英文水平,如有雷同,纯属意外!有不妥之处,欢迎拍砖!

posted @ 2010-04-26 15:10  pocketz  阅读(1851)  评论(0编辑  收藏  举报