为什么这两个“不在”查询中会有不同的结果?

时间:2017-12-18 16:40:49

标签: sql sql-server

我们正在尝试清除某些列重复的记录。如果表中没有匹配的'Y'记录,并且具有相同的姓/名,我构建了此查询以显示其标记为'N'的任何行。

select * from Table where LName+FName not in
 (select LName+FName from Table where FLAG = 'y')

然而,这会带来0结果。内部查询确实返回预期结果。如果我运行内部查询,并手动粘贴结果值,如下所示,它将运行结果。

select * from Table where LName+Fname not in ('DoeJohn','AbelAdam')

这到底发生了什么?

1 个答案:

答案 0 :(得分:1)

我建议查看您的数据... NOT IN在有NULL值时失败。您可以尝试使用NOT EXISTS或过滤任何空值:

select * from Table where LName+FName not in
        (select LName+FName from Table where FLAG = 'y' AND LName+FName IS NOT NULL)