A WHERE
clause condition that uses NOT IN
with a subquery will have unexpected results if that subquery returns
NULL
. On the other hand, NOT EXISTS
subqueries work reliably under the same conditions.
This rule raises an issue when NOT IN
is used with a subquery. This rule doesn’t check if the selected column is a nullable column
because the rules engine has no information about the table definition. It’s up to the developer to review manually if the column is nullable.