Константин wrote:
тестовый запрос с любым in в where:
delete from t4_string where id not in (select val_id from val)
и иже вариации ...
не отрабатывает условие id not in (select val_id from val)
при условии что (select val_id from val) может вернуть NULL
в перемежку с нормальными целочисленными значениями ... :(
Все отрабатывает как надо :-) Просто ты с этим не согласен :-)
3) delete from t4_string t where not exists (select * from val where val_id =
t.id);
работает в любом случае
Сколько можно повторять миру, что:
- IN и аналогичный EXISTS равнозначны
- NOT IN неравнозначен аналогичному NOT EXISTS
И разница именно в нуллах. В стандарте это описано вполне кокретно. Всю
жизнь сервер возвращал неправильный результат, если NOT IN юзал индекс и
в списке значений были нуллы. Исправлено лишь в FB2.
--
Дмитрий Еманов