oracle order by語句用法詳解

來源:互聯網
上載者:User

在執行查詢操作時,預設情況下會按照行資料插入的先後順序來顯示行資料,但在實際應用中經常需要對資料進行排序,以顯示更直觀的資料,資料排序用的就是ORDER BY子句。文法如下:

SELECT <*,column [alias],...> FROM table [WHERE condition[s]] [ORDER BY] expr [ASC|DESC];

1.升序排序

預設情況下,當使用ORDER BY執行排序操作時,資料以升序方式排序,也可以在排序列後指定ASC關鍵字。注意:當執行升序排序時,如果被排序列包含NULL值,那麼NULL會顯示在最後面。如:

SQL> SELECT ename,sal FROM emp WHERE deptno=30 ORDER BY sal;

2.降序排序

為了執行降序排序,必須要指定DESC關鍵字。注意:當執行降序排序時,如果排序列存在NULL值,那麼NULL會顯示在最前面。如:

SQL> SELECT ename,sal FROM emp WHERE deptno=30 ORDER BY sal DESC;

3.使用多列排序

當使用ORDER BY子句進行排序時,不僅可以基於單個列或單個運算式進行排序,也可以基於多個列或多個運算式,當以多個列或多個運算式進行排序時,首先按照第一個列或運算式進行,當第一個列或運算式存在相同資料時,然後按第二個列或運算式進行排序。如:

SQL> SELECT ename,sal,comm FROM emp WHERE deptno=30 ORDER BY sal ASC,comm DESC;

4.使用非選擇列進行排序

當使用ORDER BY 子句執行排序操作時,多數情況下挑選清單都會包含被排序列,但在實際情況下,挑選清單可以不包含排序列。如:

SQL> SELECT ename,job FROM emp ORDER BY sal DESC;

5.使用列別名排序

如果為列或運算式定義了別名,那麼當執行排序操作時,既可以使用列或運算式進行排序,也可以使用列別名進行排序。如:

SQL> SELECT ename,sal*12 AS "全年工資" FROM emp WHERE deptno=30 ORDER BY "全年工資" DESC;

6.使用列位置編號排序

當執行排序操作時,不僅可以指定列名,列別名進行排序,也可以按照列或運算式在挑選清單中的位置進行排序。如果列名或運算式名稱很長,那麼使用列位置排序可以縮短排序語句的長度,另外當使用UNION,NNION ALL,INTERSECT,MINUS等集合操作合并查詢結果時,如果列表的列名不同,並且希望進行排序,那麼必須使用列位置。如:

SQL> SELECT ename,sal*12 FROM emp WHERE deptno=20 ORDER BY 2 DESC;

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.