not in 不是相反的 in . select a.keya from a where a.keya not in ('a', 'b') 与相同 select a.keya from a where a.keya != 'a' and a.keya !='b' 请参阅空比较:未知 如果a.keya为空,则a.keya!='是的 UNKNOWN ,那么 a.keya not in ('a', 'b') 是 UNKNOWN . 所以你的问题是,在b.keyb中有一个或多个null。所以所有 a.keya not in (select b.keyb from b) 结果 UNKNOWN . 结果为0。
2条答案
按热度按时间bvjveswy1#
not in
不是相反的in
.select a.keya from a where a.keya not in ('a', 'b')
与相同select a.keya from a where a.keya != 'a' and a.keya !='b'
请参阅空比较:未知如果a.keya为空,则a.keya!='是的
UNKNOWN
,那么a.keya not in ('a', 'b')
是UNKNOWN
.所以你的问题是,在b.keyb中有一个或多个null。所以所有
a.keya not in (select b.keyb from b)
结果UNKNOWN
. 结果为0。ufj5ltwl2#
我能想到的唯一解释是,在你的
A
table是NULL
. 为了NULL
值时,以下两个表达式都将始终失败:所以,如果50
keya
如果值匹配,则会出现第二个查询结果。但是对于第一个查询,50个匹配值将失败,并且NULL
值也会失败。