修改条件运算符如何工作? SQL - ALL和ANY

时间:2013-10-30 05:44:46

标签: sql

假设我有一张表A,其属性编号看起来像这样。

一个 数字 1 2 3 4 五 6 7 8 9 10

此查询将返回什么?如何比较5?

SELECT numbers
FROM A
WHERE 5 > ALL (SELECT numbers FROM a)

2 个答案:

答案 0 :(得分:2)

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即可查看差异。

答案 1 :(得分:1)

它将返回一个空结果集(没有行)。

对表A [第一个实例]中的每一行评估WHERE子句。 WHERE子句测试5是否大于表A [第二个实例]中的EACH行。 它不是(有几行的值大于5)所以WHERE子句总是false。 因此,表A [第一个实例]中没有行传递查询,因此不返回任何行。