假设我有一个表 A,其属性编号如下所示。
A 数字 1 2 3 4 5 6 7 8 9 10
这个查询会返回什么?5如何比较?
SELECT numbers
FROM A
WHERE 5 > ALL (SELECT numbers FROM a)
假设我有一个表 A,其属性编号如下所示。
A 数字 1 2 3 4 5 6 7 8 9 10
这个查询会返回什么?5如何比较?
SELECT numbers
FROM A
WHERE 5 > ALL (SELECT numbers FROM a)
该ALL
语句要求您的子查询返回的所有结果
(SELECT numbers FROM A)
遵守条件(小于 5),否则不满足条件,不返回结果。
在您的情况下,子查询返回的数字 , SELECT numbers FROM a
, 6, 7, 8, 9, 10 大于 5,因此并非所有数字都符合条件,因此条件被评估为 FALSE,并且不返回任何行。
更新:
根据您的评论,我在答案中添加了详细信息:
使用ALL条件的语句应读作:
“如果返回的所有数字(SELECT numbers FROM A)
都小于 5,则返回您选择的数字MAIN SELECT
。”
使用ANY条件的语句应读作:
“如果返回的任何数字(SELECT numbers FROM A)
小于 5,则返回您选择的数字MAIN SELECT
。”
您可以在此SQLFiddle中运行查询以查看结果如何变化,只需将 ANY 替换为 ALL 并查看差异。
它将返回一个空结果集(无行)。
为表 A [第一个实例] 中的每一行评估 WHERE 子句。WHERE 子句测试 5 是否大于表 A [第二个实例] 中的每一行。不是(有几行的值大于 5),所以 WHERE 子句始终为假。因此,表 A [第一个实例] 中没有任何行通过查询,因此没有返回任何行。