以下 SQL 查询的结果包含多少个元组?
SELECT A.Id FROM A
WHERE A.Age > ALL(NULL)
A 由 4 个元组组成,ID 是主键。
答案应该是 4 还是 0?
它不会返回任何行。
为什么? 您将NULL
与空集混淆了。 您有一个要与之比较的值。 值为NULL
。 几乎任何比较都将NULL
- 这被视为错误。 因此,查询不返回任何行。
这与空集完全不同。 如果值集中没有行,则查询将返回所有行。 例如:
SELECT count(*)
FROM (VALUES (1,1), (1,2), (1,3), (1,4)) a(id, age)
WHERE A.Age > ALL (SELECT 0 WHERE 1=0);