假设我有一张表A,其属性编号看起来像这样。
一个 数字 1 2 3 4 五 6 7 8 9 10
此查询将返回什么?如何比较5?
SELECT numbers
FROM A
WHERE 5 > ALL (SELECT numbers FROM a)
答案 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 [第一个实例]中没有行传递查询,因此不返回任何行。