Страница 1 из 1

Различный результат при одном условии

Добавлено: 14 ноя 2008, 18:46
Guardian
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: Различный результат при одном условии

Добавлено: 14 ноя 2008, 19:51
WildSery
Подзапрос выполняется для каждой записи. Читай тут.

Re: Различный результат при одном условии

Добавлено: 17 ноя 2008, 08:41
Guardian
WildSery писал(а):Подзапрос выполняется для каждой записи. Читай тут.
Я так в принципе и понял. Всеравно спасибо за ответ. Тема можно закрывать.
P.S. А в версиях 2.0,2.1 Это устранено и сначала выполняется выборка а после удаление выбранных записей или все пок остается также ?

Re: Различный результат при одном условии

Добавлено: 17 ноя 2008, 10:55
WildSery
Нет, в 2.х всё работает так же, подзапрос выполняется на каждую строку.
Оно, конечно, планируется со временем поправить, но, если знать о такой особенности, то она никак не мешает. А иногда даже можно использовать.