SQL Server中不建议使用not in,因为会带来潜在的问题:
- 结果错误
- 查询性能较差
性能差都还能勉强接收,结果错误那后果可就严重了。可能产生结果错误的原因就是NOT IN 对null的处理方式,MSDN说明如下:
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时注意检查数据有效性。