Как получить все столбцы таблицы по сочетанию значений двух столбцов?
Как осуществить поиск по таблице по сочетаниям двух столбцов?
С помощью запроса:
select sb.col1, sb.col2 from table1 sb
minus
select s.col1, s.col2 from table2 s
получаем таблицу из двух столбцов, показывающих уникальные сочетания col1+col2 которые есть в table1 и нет в table2. Все столбцы таблиц отличаются по формату, кроме col1 и col2.
Как осуществить поиск в table1 по этим уникальным сочетаниям?
Т.е. нужно вывести прочие столбцы для записей, которые есть в table1 и нет в table2, где ключевым является сочетание значений столбцов col1+col2.
Ответы (2 шт):
Автор решения: MaxU
→ Ссылка
Воспользуйтесь CTE:
with tab as (
select sb.col1, sb.col2 from table1 sb
minus
select s.col1, s.col2 from table2 s
)
select
*
from table1
where (col1, col2) in (select col1, col2 from tab)
;
Автор решения: 0xdb
→ Ссылка
В дополнение к правильному ответу.
Также можно воспользоваться коррелированным запросом:
select t1.* from (
select col1, col2 from t1
minus
select col1, col2 from t2) t
cross apply (
select * from t1
where t1.col1 = t.col1 and t1.col2 = t.col2) t1
На таких тестовых данных:
with
t1 (col1, col2, col3) as (
select 1, 1, 't1-1-1' from dual union all
select 1, 2, 't1-1-2' from dual union all
select 1, 3, 't1-1-3' from dual),
t2 (col1, col2) as (
select 1, 1 from dual union all
select 2, 1 from dual)
<здесь запрос>
Будет получен ожидаемый результат:
COL1 COL2 COL3
---------- ---------- ------
1 3 t1-1-3
1 2 t1-1-2