当我得到不同的记录计数时,这个问题出现了,我认为是相同的查询,一个使用not in
where
约束,另一个使用left join
。not in
约束中的表有一个空值(坏数据),导致该查询返回0条记录计数。我有点理解为什么,但我需要一些帮助来充分理解这个概念。
简单地说,为什么查询A返回结果而B没有?
A: select 'true' where 3 in (1, 2, 3, null)
B: select 'true' where 3 not in (1, 2, null)
这是在SQL Server 2005上。我还发现调用set ansi_nulls off
会导致B返回一个结果。