Разница между SQL NOT IN и NOT EXISTS при обработке NULL-значений заключается в следующем:
- NOT IN не вернёт записей для NULL-значений, поскольку NULL-значения не трактуются как сравниваемые. 1 Даже если только одно значение в заданных данных равно NULL, весь результат будет пустым. 4
- NOT EXISTS может обрабатывать NULL-значения. 4 Ему не важно, какие данные выбраны в подзапросе, он только возвращает TRUE или FALSE. 4 Если возвращается любая строка, то возвращается TRUE, если нет — FALSE. 4
Таким образом, выбор между NOT IN и NOT EXISTS зависит от того, как нужно обрабатывать NULL-значения в запросе.