oracle之 any、all 解析

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

ALL的用法
1.1 

SELECT * FROM TABLEA WHERE FLD > ALL(SELECT FLD FROM TABLEA)
這相當於
SELECT * FROM TABLEA WHERE FLD > (SELECT
MAX(FLD) FROM TABLEA)

1.2 

SELECT * FROM TABLEA WHERE FLD< ALL(SELECT FLD FROM TABLEA)
這相當於
SELECT * FROM TABLEA WHERE FLD > (SELECTMIN(FLD) FROM TABLEA)


1.3

SELECT * FROM TABLEA WHERE FLD ALL(SELECT FLD FROM TABLEA)

=all 當all子句數據集是一個數據的,作用跟=差不多。
當all子句數據集是多條數據的,返回結果集爲空。




ANY的用法

2.1 

SELECT * FROM TABLEA WHERE FLD> ANY(SELECT FLD FROM TABLEA)

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

2.2

SELECT * FROM TABLEA WHERE FLD< ANY(SELECT FLD FROM TABLEA)

這相當於
SELECT * FROM TABLEA WHERE FLD > (SELECT
MAX(FLD) FROM TABLEA)

2.3

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




發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章