因此mySQL dev site告诉我<> ALL
和NOT IN
是彼此的别名。我的问题是,为什么呢?
让我更具体一点:
当“子查询返回的列中的所有值的比较(此处,相等)为TRUE”时, = ALL
返回true,即每个外部查询行仅满足outer query = ALL (inner query)
内部查询中的所有行都具有相同的值
value等于外部查询行值
因此,当内部查询中存在至少1 值且外部查询不同时,outer query <> ALL (inner query)
必须返回true。
但只有当内部查询的行的 NONE 与相关的外部查询行匹配时,NOT IN
才会返回true。
我有什么根本错误吗?
由于
答案 0 :(得分:2)
因此,当内部查询中存在至少1 值且外部查询不同时,
outer query <> ALL (inner query)
必须返回true。
那不是真的。就像value = ALL (query)
在value
等于query
返回的每个值时返回true一样;当value <> ALL (query)
与value
返回的每个值不同时,query
会返回true。您显然认为value <> ALL (query)
意味着NOT (value = ALL (query))
,但事实并非如此。