1. 程式人生 > >sql中的order by

sql中的order by

SQL> --order by後面 + 列、表示式、別名、序號
SQL> select empno,ename,sal,sal*12
  2  from emp
  3  order by sal*12 desc;


     EMPNO ENAME      SAL     SAL*12                                                                                                                  
---------- -------- ----- ----------                                                                                                                  
      7839 KING      5000      60000                                                                                                                  
      7902 FORD      3000      36000                                                                                                                  
      7788 SCOTT     3000      36000                                                                                                                  
      7566 JONES     2975      35700                                                                                                                  
      7698 BLAKE     2850      34200                                                                                                                  
      7782 CLARK     2450      29400                                                                                                                  
      7499 ALLEN     1600      19200                                                                                                                  
      7844 TURNER    1500      18000                                                                                                                  
      7934 MILLER    1300      15600                                                                                                                  
      7521 WARD      1250      15000                                                                                                                  
      7654 MARTIN    1250      15000                                                                                                                  


     EMPNO ENAME      SAL     SAL*12                                                                                                                  
---------- -------- ----- ----------                                                                                                                  
      7876 ADAMS     1100      13200                                                                                                                  
      7900 JAMES      950      11400                                                                                                                  
      7369 SMITH      800       9600                                                                                                                  


已選擇 14 行。


SQL> ed
已寫入 file afiedt.buf


  1  select empno,ename,sal,sal*12 年薪
  2  from emp
  3* order by 年薪 desc
SQL> /


     EMPNO ENAME      SAL       年薪                                                                                                                  
---------- -------- ----- ----------                                                                                                                  
      7839 KING      5000      60000                                                                                                                  
      7902 FORD      3000      36000                                                                                                                  
      7788 SCOTT     3000      36000                                                                                                                  
      7566 JONES     2975      35700                                                                                                                  
      7698 BLAKE     2850      34200                                                                                                                  
      7782 CLARK     2450      29400                                                                                                                  
      7499 ALLEN     1600      19200                                                                                                                  
      7844 TURNER    1500      18000                                                                                                                  
      7934 MILLER    1300      15600                                                                                                                  
      7521 WARD      1250      15000                                                                                                                  
      7654 MARTIN    1250      15000                                                                                                                  


     EMPNO ENAME      SAL       年薪                                                                                                                  
---------- -------- ----- ----------                                                                                                                  
      7876 ADAMS     1100      13200                                                                                                                  
      7900 JAMES      950      11400                                                                                                                  
      7369 SMITH      800       9600                                                                                                                  


已選擇 14 行。


SQL> ed
已寫入 file afiedt.buf


  1  select empno,ename,sal,sal*12 年薪
  2  from emp
  3* order by 4 desc
SQL> /


     EMPNO ENAME      SAL       年薪                                                                                                                  
---------- -------- ----- ----------                                                                                                                  
      7839 KING      5000      60000                                                                                                                  
      7902 FORD      3000      36000                                                                                                                  
      7788 SCOTT     3000      36000                                                                                                                  
      7566 JONES     2975      35700                                                                                                                  
      7698 BLAKE     2850      34200                                                                                                                  
      7782 CLARK     2450      29400                                                                                                                  
      7499 ALLEN     1600      19200                                                                                                                  
      7844 TURNER    1500      18000                                                                                                                  
      7934 MILLER    1300      15600                                                                                                                  
      7521 WARD      1250      15000                                                                                                                  
      7654 MARTIN    1250      15000                                                                                                                  


     EMPNO ENAME      SAL       年薪                                                                                                                  
---------- -------- ----- ----------                                                                                                                  
      7876 ADAMS     1100      13200                                                                                                                  
      7900 JAMES      950      11400                                                                                                                  
      7369 SMITH      800       9600                                                                                                                  


已選擇 14 行。


SQL> ed
已寫入 file afiedt.buf


  1  select empno,ename,sal,sal*12 年薪
  2  from emp
  3* order by 5 desc
SQL> /
order by 5 desc
         *
第 3 行出現錯誤: 
ORA-01785: ORDER BY 項必須是 SELECT-list 表示式的數目 




SQL> host cls


SQL> --多個列排序
SQL> select *
  2  from emp
  3  order by deptno,sal;


     EMPNO ENAME    JOB              MGR HIREDATE         SAL       COMM     DEPTNO                                                                   
---------- -------- --------- ---------- -------------- ----- ---------- ----------                                                                   
      7934 MILLER   CLERK           7782 23-1月 -82      1300                    10                                                                   
      7782 CLARK    MANAGER         7839 09-6月 -81      2450                    10                                                                   
      7839 KING     PRESIDENT            17-11月-81      5000                    10                                                                   
      7369 SMITH    CLERK           7902 17-12月-80       800                    20                                                                   
      7876 ADAMS    CLERK           7788 23-5月 -87      1100                    20                                                                   
      7566 JONES    MANAGER         7839 02-4月 -81      2975                    20                                                                   
      7788 SCOTT    ANALYST         7566 19-4月 -87      3000                    20                                                                   
      7902 FORD     ANALYST         7566 03-12月-81      3000                    20                                                                   
      7900 JAMES    CLERK           7698 03-12月-81       950                    30                                                                   
      7654 MARTIN   SALESMAN        7698 28-9月 -81      1250       1400         30                                                                   
      7521 WARD     SALESMAN        7698 22-2月 -81      1250        500         30                                                                   


     EMPNO ENAME    JOB              MGR HIREDATE         SAL       COMM     DEPTNO                                                                   
---------- -------- --------- ---------- -------------- ----- ---------- ----------                                                                   
      7844 TURNER   SALESMAN        7698 08-9月 -81      1500          0         30                                                                   
      7499 ALLEN    SALESMAN        7698 20-2月 -81      1600        300         30                                                                   
      7698 BLAKE    MANAGER         7839 01-5月 -81      2850                    30                                                                   


已選擇 14 行。


SQL> ed
已寫入 file afiedt.buf


  1  select *
  2  from emp
  3* order by deptno,sal desc
SQL> /


     EMPNO ENAME    JOB              MGR HIREDATE         SAL       COMM     DEPTNO                                                                   
---------- -------- --------- ---------- -------------- ----- ---------- ----------                                                                   
      7839 KING     PRESIDENT            17-11月-81      5000                    10                                                                   
      7782 CLARK    MANAGER         7839 09-6月 -81      2450                    10                                                                   
      7934 MILLER   CLERK           7782 23-1月 -82      1300                    10                                                                   
      7788 SCOTT    ANALYST         7566 19-4月 -87      3000                    20                                                                   
      7902 FORD     ANALYST         7566 03-12月-81      3000                    20                                                                   
      7566 JONES    MANAGER         7839 02-4月 -81      2975                    20                                                                   
      7876 ADAMS    CLERK           7788 23-5月 -87      1100                    20                                                                   
      7369 SMITH    CLERK           7902 17-12月-80       800                    20                                                                   
      7698 BLAKE    MANAGER         7839 01-5月 -81      2850                    30                                                                   
      7499 ALLEN    SALESMAN        7698 20-2月 -81      1600        300         30                                                                   
      7844 TURNER   SALESMAN        7698 08-9月 -81      1500          0         30                                                                   


     EMPNO ENAME    JOB              MGR HIREDATE         SAL       COMM     DEPTNO                                                                   
---------- -------- --------- ---------- -------------- ----- ---------- ----------                                                                   
      7654 MARTIN   SALESMAN        7698 28-9月 -81      1250       1400         30                                                                   
      7521 WARD     SALESMAN        7698 22-2月 -81      1250        500         30                                                                   
      7900 JAMES    CLERK           7698 03-12月-81       950                    30                                                                   


已選擇 14 行。


SQL> ed
已寫入 file afiedt.buf


  1  select *
  2  from emp
  3* order by deptno desc,sal desc
SQL> /


     EMPNO ENAME    JOB              MGR HIREDATE         SAL       COMM     DEPTNO                                                                   
---------- -------- --------- ---------- -------------- ----- ---------- ----------                                                                   
      7698 BLAKE    MANAGER         7839 01-5月 -81      2850                    30                                                                   
      7499 ALLEN    SALESMAN        7698 20-2月 -81      1600        300         30                                                                   
      7844 TURNER   SALESMAN        7698 08-9月 -81      1500          0         30                                                                   
      7521 WARD     SALESMAN        7698 22-2月 -81      1250        500         30                                                                   
      7654 MARTIN   SALESMAN        7698 28-9月 -81      1250       1400         30                                                                   
      7900 JAMES    CLERK           7698 03-12月-81       950                    30                                                                   
      7902 FORD     ANALYST         7566 03-12月-81      3000                    20                                                                   
      7788 SCOTT    ANALYST         7566 19-4月 -87      3000                    20                                                                   
      7566 JONES    MANAGER         7839 02-4月 -81      2975                    20                                                                   
      7876 ADAMS    CLERK           7788 23-5月 -87      1100                    20                                                                   
      7369 SMITH    CLERK           7902 17-12月-80       800                    20                                                                   


     EMPNO ENAME    JOB              MGR HIREDATE         SAL       COMM     DEPTNO                                                                   
---------- -------- --------- ---------- -------------- ----- ---------- ----------                                                                   
      7839 KING     PRESIDENT            17-11月-81      5000                    10                                                                   
      7782 CLARK    MANAGER         7839 09-6月 -81      2450                    10                                                                   
      7934 MILLER   CLERK           7782 23-1月 -82      1300                    10                                                                   


已選擇 14 行。


SQL> --order by作用於後面所有的列;desc只作用於離他最近的列