Oracle學習日誌-8(查詢結果排序)

要用到的表以下

書上寫到,上面的查詢結果排序是隨機的,再執行幾回結果可能不一樣,可是我執行屢次後,查詢結果的排序都是如此,是由於oracle的默認處理方式是按照物理儲存順序查詢的,而我在插入記錄的時候都是按照id順序插入的,因此查詢出來的結果好像是按照id來排序的同樣,實際上並非。
若是要對查詢結果排序,能夠使用ORDER BY子句。sql

ORDER BY:

SELECT <列名1> <列名2> <列名3>...
FROM <表名>
ORDER BY<排序基準列1> <排序基準列2>...;

例如按照售價從高到低排序查詢結果:oracle

SELECT *
FROM Product
ORDER BY sale_price DESC;


若是是從低到高,就把DESC換成ASC。若是ORDER BY子句沒有指定排列順序,默認使用升序排序。
若是排序基準列有相同的值,那麼相同的值排序順序又會隨機。那麼能夠指定多個排序基準列,查詢結果會優先按照左邊的標準排序,若是同樣,再考慮右邊的標準。如3d

SELECT *
FROM Product
ORDER BY sale_price ,product_id;

這樣就會優先按照售價的升序排列,若是售價同樣,就按照商品id排序。

若是排序鍵中有NULL值,那麼含NULL的記錄會在結果開頭或者結尾彙總,oracle是在查詢結果開頭彙總。code

列編號:

列表號是指SELECT子句的列按照從左到右的編號。ORDER BY子句能夠經過列編號排序,如blog

SELECT product_id,product_name, sale_price
FROM Product
ORDER BY 3 DESC;


可是不推薦這樣用,由於閱讀很麻煩。並且該功能之後可能會被刪除。排序

注意:

ORDER BY能夠使用別名,可是GROUP不能使用別名。由於SELECT的語句執行順序實際上是:
FROM——WHERE——GROUP BY——HAVING——SELECT——ORDER BY
設置別名是在SELECT這裏設置的,因此在它以前的GROUP BY是不能使用別名的。class

相關文章
相關標籤/搜索