【陷阱系列】SQLServer in/not in 陷阱


SQL Server中不建议使用not in,因为会带来潜在的问题:

  • 结果错误
  • 查询性能较差
性能差都还能勉强接收,结果错误那后果可就严重了。可能产生结果错误的原因就是NOT IN 对null的处理方式,MSDN说明如下:

System_CAPS_ICON_caution.jpg Caution

Any null values returned by subquery or expression that are compared to test_expression using IN or NOT IN return UNKNOWN. Using null values in together with IN or NOT IN can produce unexpected results.


语法:
test_expression [ NOT ] IN   
    ( subquery | expression [ ,...n ]  
    )   

千万注意子查询和表达式中不能出现null,使用in/not in时注意检查数据有效性。

MSDN  IN(Transat-SQL)

你可能感兴趣的:(SQL,Server)