Почему лучше использовать exists вместо not in.
Булевые операторы с null работают следующим образом:
1 NOT IN (2, null) => (1!=2) AND (1!=null) => true AND null => null;
Булевые операторы с null работают следующим образом:
- null AND false = false
- false AND null = false
- null AND true = null
- true AND null = null
- null OR true = true
- true OR null = true
- null OR false = null
- false OR null = null
select * from dual where 1 not in (select 2 from dual union select null from dual)
1 NOT IN (2, null) => (1!=2) AND (1!=null) => true AND null => null;
Комментариев нет :
Отправить комментарий