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));
问题出在行 | 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)
我对运算符 [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));
问题出在行 | 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)