[Oracle]any, all解析

來源:互聯網
上載者:User

標籤:blog   http   ar   使用   sp   資料   on   問題   log   

因為很少用到, 所以幾乎忘記了這幾個函數, 不過它們還是很有用的使用它們可以大大簡化一些SQL文的文法, 至於效率問題, 
如CCW所說它們和EXISTS, IN 之類沒有什麼差別, 而且要具體問題具體分析
其中ANY和SOME在意思上是相同的, 
可以相互替代.
舉幾個例子來說明ALL和ANY的用法
1. SELECT * FROM TABLEA WHERE FLD > ALL(SELECT FLD FROM TABLEA)
這相當於
SELECT * FROM TABLEA WHERE FLD > (SELECT MAX(FLD) FROM TABLEA)

 

2. SELECT * FROM TABLEA WHERE FLD > ANY(SELECT FLD FROM TABLEA)
這相當於
SELECT * FROM TABLEA WHERE FLD > (SELECT MIN(FLD) FROM TABLEA)

 

3. SELECT * FROM TABLEA WHERE FLD = ANY(SELECT FLD FROM TABLEA)
這相當於
SELECT * FROM TABLEA WHERE FLD IN (SELECT FLD FROM TABLEA)

 

最後, 關於HAVING它是用於合計計算的運算子, 它和WHERE有著不同的含義
當使用GROUP時HAVING是對各組中的記錄進行比較的意思, 
換句話說它是選擇一組資料的條件
而WHERE則和分組無關, 它是選擇一行資料的條件
比如, 
SELECT NAME, AVG(PRICE) FROM STORE GROUP BY NAME HAVING AVG(PRICE) > 10
這裡的HAVING是WHERE無法替代的
至於效率, WHERE是在產生結果集之前就完成的處理, 
而HAVING則要等到結果集做成後在迴圈執行的處理, 自然效率要低一些, 因此在只需要對行進行操作的時候, 不要使用HAVING。

 

http://www.cnblogs.com/Ronger/archive/2011/12/28/2305175.html

[Oracle]any, all解析

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.