ANY
直覺意思是:任何匹配的集合。 不過,我發現了它,因爲預計在兩種情況下它並不表現:反向直觀含義< ANY & > SQL中的ANY邏輯運算符
x > ANY(...)
值必須大於 最小值的名單,以評估爲TRUE更大。
x < ANY(...)
的值必須大於在列表中的最大的值小 評估爲TRUE
(Source)
換句話說,通過ANY
引入子查詢的全部結果必須是與x
相比,這與ANY
的含義相反。 爲什麼會這樣,或者我只是誤解了<ANY
& >ANY
運營商的語義?
ANY
直覺意思是:任何匹配的集合。 不過,我發現了它,因爲預計在兩種情況下它並不表現:反向直觀含義< ANY & > SQL中的ANY邏輯運算符
x > ANY(...)
值必須大於 最小值的名單,以評估爲TRUE更大。
x < ANY(...)
的值必須大於在列表中的最大的值小 評估爲TRUE
(Source)
換句話說,通過ANY
引入子查詢的全部結果必須是與x
相比,這與ANY
的含義相反。 爲什麼會這樣,或者我只是誤解了<ANY
& >ANY
運營商的語義?
x > ANY(...)
該值必須大於列表中評估爲TRUE的最小值。 x < ANY (...)
該值必須小於列表中要評估爲TRUE的最大值
以上兩個聲明均聲明瞭oracle可能用於比較的算法。例如。
select * from X where id > Any (1 , 2 , 3 , 4 , 5)
在上面的代碼可以向下鑽取作爲
id > 1 OR id > 2 OR id > 3 and so on..
所以只有ID> 1將斷言其真。 (算法優化)與他們的方式相同x < ANY (...)
x > ANY(...)
的值必須大於列表中的最小的值,以評估TRUE
這說明結果。這可能需要考慮一下。 x
可能大於每值在列表中,它仍然會返回TRUE
。相反可能會更容易理解:
x > ANY(...)
將FALSE
如果該值小於或等於列表中的最小值,因爲它也必須小於或等於列表的所有其他成員
或者另一種方法:如果在列表中至少一個值,y
說,那x
大於
x > ANY(...)
將是真實的。如果有一組這樣的y
值,則列表中的最小值在邏輯上必須是該組中的一個成員。
「ANY」表現爲「ANY」。當你說「他們中的任何一個......」時你的意思是什麼?你的意思是「所有人」?另外看看[this](http://www.merriam-webster.com/dictionary/any) –
對我來說這是正確的意思。但是你很難看到使用ANY/ALL的查詢,因爲大多數DBMS不能實現它,並且它可以用更易讀的查詢(IMHO)輕鬆地重寫。例如。你不寫「x = ANY」而不是「x IN」 – dnoeth
你正在使用'ANY'並期望'ALL'的功能 – Serpiton