在这种情况下与<>不同吗?

时间:2019-11-11 14:01:56

标签: sql sql-server where-clause

在我正在处理的SP的where子句中,我试图过滤出匹配IDs的行。下面有什么区别吗?两种方法都有好处吗? (我想第一个选择会更快)。

 - Where t1.ID <> t2.ID
 - Where t1.ID NOT IN (Select ID from T2)

1 个答案:

答案 0 :(得分:3)

我只能想象一个上下文,它们是相同的。如果t2在表中最多具有id个不同的值,那就是这样。

这似乎不太可能,所以我认为唯一合理的答案是“否”。

我怀疑您在想:

select . . .
from t1 left join
     t2
     on t1.id = t2.id
where t2.id is null;

这几乎等同于带有子查询的not in。 (唯一的区别是id是否曾经是NULL。)