mssql sqlserver sql脚本中替代not in关键字的方法分享


摘要:
下文通过举例的方式分享,sql脚本中替代not in关键字的写法,如下所示:
实验环境:sql server 2008 R2


常常在编写返回一张表中指定列不在另一张表的写法中时,我们使用最简便的方法如下所示:

 select * from tableNameA 
   where [列名] not in 
   ( 
     select [列名] from tableNameB
      where ...
   )

大家常说这种写法效率低下(未做实验证明),下面讲述一种改写not in 的写法,如下所示:
例:
表 maomaoA
拥有keyId和info两列
表 maomaoB
拥有keyId 和 infoB两列

当我们不想使用 not in 关键字时,我们可以采用连接的方式操作,如下
select a.keyId,a.info from maomaoA a
where exists (
select * from maomaoB b where b.keyId = a.keyId
)