SQL 使用 ALL AND NOT 运算符

SQL using ALL AND NOT operators

我对运算符 [NOT] 和 [ALL] 有疑问

给定 tba:

id  name
1   a
2   b
3   c
4   d
5   e

tbb:

id  name
6   a
7   b
8   c
9   d
10  e

test:

id  name
4   a
5   b
7   c

我运行以下查询:

SELECT id, name
  FROM tbb
  WHERE (tbb.id > ALL (SELECT id FROM tba))
    AND (NOT tbb.id < ALL (SELECT id FROM test));

data A data B

问题出在行 | 6 | a | 为什么它 return 的值小于行 test.id 中的值?

我不完全明白你的问题。 test.id 有三个值,4, 5, 7。这个表达式:

tbb.id < ALL (SELECT id FROM test)

returns"false",因为4和5不成立

因此,

NOT tbb.id < ALL (SELECT id FROM test)

returns 正确。

注意:我不使用 ALL/SOME/ANY 运算符(或者更准确地说,非常、非常、非常少地使用它们)。我觉得这样写更清楚:

tbb.id < (SELECT MIN(id) FROM test)