《Oracle SQL疑难解析》——1.3 将结果排序

    xiaoxiao2024-02-20  159

    本节书摘来自异步社区出版社《Oracle SQL疑难解析》一书中的第1章,第1.3节,作者: 【美】Grant Allen , Bob Bryla , Darl Kuhn,更多章节内容可以访问云栖社区“异步社区”公众号查看。

    1.3 将结果排序

    Oracle SQL疑难解析

    1.3.1 要解决的问题

    用户想把查询出来的记录按某种顺序排列。例如,他们想把员工先按姓、再按名的字母顺序排列。

    1.3.2 解决方法

    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 …

    1.3.3 数据库如何工作

    在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 …
    最新回复(0)