我正在学习SQL,并且我已经碰到了几个涉及集合的定义,例如:
SELECT x
FROM table t1
WHERE x >= ALL (
SELECT x
FROM table t2
)
找到集合的最大元素
x <= ALL(...)
找到数据集的最小元素,x = ANY (...)
与x IN (...)
相同,x <> ALL(...)
与x NOT IN(...)
相同
但我无法弄清楚x <> ANY
是否意味着什么。
答案 0 :(得分:2)
意味着某些东西,但它并不是特别有用。直接从MySQL manual:
必须遵循比较运算符的
ANY
关键字表示如果对于子查询的列中TRUE
的{{1}}的比较为TRUE
,则返回ANY
返回“。
如果子查询结果中至少有两个不同的非x <> ANY
元素,那么TRUE
始终为NULL
(因为x
必然是{{1}至少其中一个)。编辑:除非<>
是x
,否则正如@ruakh在评论中指出的那样,NULL
始终是NULL <> anything
。
答案 1 :(得分:0)
t1.x <> ANY (SELECT t2.x FROM t2)
与EXISTS (SELECT 1 FROM t2 WHERE t2.x <> t1.x)
相同;也就是说,如果t2
中只有一行t2.x <> t1.x
,则确实如此。