簡體   English   中英

SQL 中的 ANY 和 ALL 運算符有什么區別(在下面提到的情況下)

[英]What is the difference between ANY and ALL operators in SQL (in the below mentioned case)

使用ANY運算符查詢 1

Select * from products
where price > Any (select price from products where price > 500)

使用ALL運算符查詢 2

Select * from products
where price > All (select price from products where price > 500)

兩個查詢都是一樣的,唯一的區別是操作符的變化。

查詢 1沒有產生任何結果(0 行)

查詢 2為我提供了表中存在的所有行(77 行)

我無法理解上述現象,請幫助我理解這兩個查詢。

請參考以下樣本數據:

產品編號 產品名稱 價格

1 鼠標 10

2 鍵盤 21

3 交叉配合 45

4 椅子 123

5 表 263

從這里任何/所有

9.23.4。 任何/一些

...

右邊是一個帶括號的子查詢,它必須只返回一列。 使用給定的運算符計算左側表達式並與子查詢結果的每一行進行比較,這必須產生 Boolean 結果。 如果獲得任何真結果,則 ANY 的結果為“真”。 如果沒有找到真結果(包括子查詢不返回行的情況),則結果為“假”。

9.23.5。 全部

...

右邊是一個帶括號的子查詢,它必須只返回一列。 使用給定的運算符計算左側表達式並與子查詢結果的每一行進行比較,這必須產生 Boolean 結果。 如果所有行都為真(包括子查詢不返回任何行的情況),則 ALL 的結果為“真”。 如果發現任何錯誤結果,則結果為“錯誤”。 如果沒有與子查詢行的比較返回 false,並且至少一個比較返回 NULL,則結果為 NULL。

select price from products where price > 500不返回任何行。 所以在ANY情況下:

如果沒有找到真結果(包括子查詢不返回行的情況),則結果為“假”。

ALL情況下:

如果所有行都為真(包括子查詢不返回任何行的情況),則 ALL 的結果為“真”。

這意味着對於ANY products都沒有匹配項,並且在ALL情況下所有products都匹配。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM