查询 1:
select count(UserID)
from users
where UserID IN (select UserID from otherTable)
退货: 178
查询 2: : (简单地IN
改为NOT IN
)
select count(UserID)
from users
where UserID NOT IN (select UserID from otherTable)
退货: 0
查询 3:(完全删除 IN 子句)
select count(UserID)
from users
回报:( 1047123
超过一百万)
什么?我不能……甚至……
我唯一的解释是我的数据库不一致/损坏,我必须运行 DBCC CHECKDB 或其他东西。
附言。UserID
是一个主键,所以 - 没有欺骗。
NOT IN
当子查询返回true
一个或多个值时,将不会求值。NULL
用于
NOT EXISTS
避免这种常见问题。有关更多信息和更详细信息的链接,请参阅此答案。