Выберите Таблица A минус Таблица B, где условие состоит из двух столбцов - PullRequest
0 голосов
/ 12 сентября 2018

У меня есть две таблицы. Таблица A и таблица B.

Я бы хотел выбрать все из таблицы A, которой нет в таблице B. Звучит легко, улов - мне нужно выбрать его на основе двух значений (два столбца) ревизия И тип дела. Как то так.

select a.revision, a.casetype from A a
minus
select b.revision, b.casetype from B b;

Проблема в том, что я не верну идентификатор из таблицы А.

Можно ли выбрать всю таблицу A минус таблицу B, где условия состоят из двух столбцов? Я хотел бы придерживаться SQL (без PL / SQL)

Я также попытался написать что-то вроде запроса ниже, но, думаю, я не смогу это сделать, так как мне нужно полностью проверить ревизию И тип дела

select * from A a where a.casetype IN (select...) and a.revision IN (select...)

Есть идеи, как обойтись? Спасибо

Ответы [ 3 ]

0 голосов
/ 12 сентября 2018

Oracle поддерживает кортежи, поэтому, если вы хотите, вы можете сделать:

select a.*
from a
where (a.revision, a.casetype) in (select a.revision, a.casetype from A a
                                   minus
                                   select b.revision, b.casetype from B b
                                  );

Обычно я бы выбрал not exists, но это решение, основанное на том, что вы уже сделали.

0 голосов
/ 12 сентября 2018

кроме работы должно

выберите a.revision, a.casetype из A a кроме выберите b.revision, b.casetype из B b;

0 голосов
/ 12 сентября 2018

Конечно, я считаю, что базовая проверка не существует должна работать.

select a.id, a.revision, a.casetype
from A a
where not exists (
    select 1
    from B
    where revision = a.revision and casetype = a.casetype
);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...