Sql 如何在Where子句中使用NOT?

Sql 如何在Where子句中使用NOT?,sql,sql-server-2005,sql-server-2008,Sql,Sql Server 2005,Sql Server 2008,如果我用以下方式编写NOT查询,两者之间的区别是什么 SELECT iBatchID,COUNT(*) FROM #temp WHERE NOT iBatchID IN (1) GROUP BY iBatchID SELECT iBatchID,COUNT(*) FROM #temp WHERE iBatchID NOT IN (1) GROUP BY iBatchID 如果我在(1)中使用WHERE NOT iBatchID和WHERE iBatchID NOT in(1),两者之间有什

如果我用以下方式编写NOT查询,两者之间的区别是什么

SELECT iBatchID,COUNT(*) FROM #temp WHERE NOT iBatchID  IN (1) GROUP BY iBatchID

SELECT iBatchID,COUNT(*) FROM #temp WHERE iBatchID NOT IN (1) GROUP BY iBatchID

如果我在(1)中使用
WHERE NOT iBatchID
WHERE iBatchID NOT in(1)
,两者之间有什么区别?

没有区别。它们将具有相同的查询结果

我相信执行计划应该是相同的,但最好的方法是捕获每个查询的实际执行计划


我个人总是选择
。。。其中SomeCol不在(…)
,因为它读起来比
更清晰一些。。。不是SomeCol所在的(…)
。但这都是个人偏好,你觉得这更具可读性和可维护性。

检查执行计划,看看是否有差异。据我理解,这与说
没有什么不同!(5==3)
5!=3
。它们的评估结果是一样的。只是后者更能表达你的目的。根据你的索引,我想编译器可以选择不同的路径,但我只是对两个简单的表进行了测试,得到了两个方法相同的执行计划。@Michael,我只是检查了它们的执行计划是否相同,并且有50%的查询成本。@izuriel当我对这样一个字段执行此操作时,我在该字段“INF”中有值我在where条件中使用不喜欢的“%INF%”时,它会给我错误,而当我使用不喜欢的“%INF%”时,它会给我无错误的返回结果。@VikrantMore没问题,很乐意帮助:)