Firebird 1,5 Windows XP Pro
Выполняю следующий запрос:
SELECT * FROM GROUPMAP G WHERE
NOT(G.VHOD IN (SELECT KODGROUPMAP FROM GROUPMAP) OR (G.KODGROUPMAP = 1))
Сервер возвращяет 2 записи.
Выполняю такой запрос:
DELETE FROM GROUPMAPG WHERE
NOT(G.VHOD IN (SELECT KODGROUPMAP FROM GROUPMAP) OR (G.KODGROUPMAP = 1))
Сервер удаляет 3 записи !!!
Вопрос заключается в том почему так происходит ведь условия для выборки и удаления одинаковое
Различный результат при одном условии
Re: Различный результат при одном условии
Подзапрос выполняется для каждой записи. Читай тут.
Re: Различный результат при одном условии
Я так в принципе и понял. Всеравно спасибо за ответ. Тема можно закрывать.WildSery писал(а):Подзапрос выполняется для каждой записи. Читай тут.
P.S. А в версиях 2.0,2.1 Это устранено и сначала выполняется выборка а после удаление выбранных записей или все пок остается также ?
Re: Различный результат при одном условии
Нет, в 2.х всё работает так же, подзапрос выполняется на каждую строку.
Оно, конечно, планируется со временем поправить, но, если знать о такой особенности, то она никак не мешает. А иногда даже можно использовать.
Оно, конечно, планируется со временем поправить, но, если знать о такой особенности, то она никак не мешает. А иногда даже можно использовать.