当我得到不同的记录计数时,出现了这个问题,我认为是使用not in where约束的相同查询,另一个是a 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)
Run Code Online (Sandbox Code Playgroud)
这是在SQL Server 2005上.我还发现调用set ansi_nulls off导致B返回结果.
我有一个where子句
... Where TruckID IN (select VanID from Vantbl)
Run Code Online (Sandbox Code Playgroud)
我喜欢使用一个案例,因此它足够聪明
我有完整的后续行动
... Where TruckID IN
CASE WHEN @VehicleType = 'VAN'
THEN (select VanID from Vantbl)
CASE WHEN @VehicleType = 'SUV'
THEN (select SUVID from SUVtbl)
END
Run Code Online (Sandbox Code Playgroud)
但似乎没有工作.我可以用任何方式让它像这样工作.