Страницы

Поиск по вопросам

четверг, 6 июня 2019 г.

Как по другому выполнить запрос в Oracle?

Есть две таблицы - А и В. 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) )

Комментариев нет:

Отправить комментарий