0

假设我有一个表 A,其属性编号如下所示。

A 数字 1 2 3 4 5 6 7 8 9 10

这个查询会返回什么?5如何比较?

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

2 回答 2

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

于 2013-10-30T05:49:57.590 回答
1

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

为表 A [第一个实例] 中的每一行评估 WHERE 子句。WHERE 子句测试 5 是否大于表 A [第二个实例] 中的每一行。不是(有几行的值大于 5),所以 WHERE 子句始终为假。因此,表 A [第一个实例] 中没有任何行通过查询,因此没有返回任何行。

于 2013-10-30T05:50:10.823 回答