本节书摘来自异步社区出版社《Oracle SQL疑难解析》一书中的第1章,第1.3节,作者: 【美】Grant Allen , Bob Bryla , Darl Kuhn,更多章节内容可以访问云栖社区“异步社区”公众号查看。
Oracle SQL疑难解析
用户想把查询出来的记录按某种顺序排列。例如,他们想把员工先按姓、再按名的字母顺序排列。
Oracle允许使用标准的ORDER BY子句来排列查询结果:
select employee_id, first_name, last_name, hire_date, salary from hr.employees where salary > 5000 order by last_name, first_name; 得到的结果如下: EMPLOYEE_ID FIRST_NAME LAST_NAME HIRE_DATE SALARY ----------- ---------- --------- --------- ------ 174 Ellen Abel 11/MAY/96 11000 166 Sundar Ande 24/MAR/00 6400 204 Hermann Baer 07/JUN/94 10000 167 Amit Banda 21/APR/00 6200 172 Elizabeth Bates 24/MAR/99 7300 151 David Bernstein 24/MAR/97 9500 169 Harrison Bloom 23/MAR/98 10000 148 Gerald Cambrault 15/OCT/99 11000 154 Nanette Cambrault 09/DEC/98 7500 110 John Chen 28/SEP/97 8200 …在ORDER BY 子句的作用下,Oracle先按LAST_NAME字段进行排序,在LAST_NAME的值相同的情况下,再按FIRST_NAME字段来排序。如果用户不在语句中指明升序或降序,则Oracle 隐式使用升序来排列结果,数字是从0到9,字母从A到Z,依此类推。可以用ASC 或DESC选项显式控制升序或降序。例如:
select employee_id, first_name, last_name, hire_date, salary from hr.employees where salary > 5000 order by salary desc;语句中显式地指明了按薪水字段降序排列,得到的结果是:
EMPLOYEE_ID FIRST_NAME LAST_NAME HIRE_DATE SALARY ----------- ---------- --------- --------- ------ 100 Steven King 17-JUN-87 24000 102 Lex De Haan 13-JAN-93 17000 101 Neena Kochhar 21-SEP-89 17000 145 John Russell 01-OCT-96 14000 146 Karen Partners 05-JAN-97 13500 …