Есть две таблицы - А и В.
create table a (
KEY1 number
);
create table b (
KEY2 number,
KEY3 number
);
Нужно проверить, что для каждой записи таблицы А нет записей в таблице B по условию A.KEY1 = B.KEY2. Если же записи есть, то для каждой такой записи таблицы В проверить что нет записей в таблице А по условию В.KEY3 = A.KEY1.
Реализовал так:
SELECT *
FROM A
WHERE NOT EXISTS
(SELECT *
FROM B
WHERE A.KEY1 = B.KEY2
AND B.KEY3 NOT IN (SELECT KEY1 FROM A))
Есть другие варианты выполнить этот же запрос?
Ответ
select * from A where key1 not in(select key2 from B) union all ( select * from A where key1 in(select key2 from B) intersect select * from a where key1 not in(select key3 from b) )
Комментариев нет:
Отправить комментарий