объединение вместе с предложением where - PullRequest
0 голосов
/ 05 мая 2020

Я хочу сделать что-то подобное, но я знаю, что это приведет к ошибке

select * from t1 a
union 
select * from t2 b
union 
select * from t3 c
where b.col1!=c.col1

Что мне следует использовать, чтобы достичь вышеуказанного? ..

Спасибо! !

Ответы [ 2 ]

2 голосов
/ 05 мая 2020

Вы можете использовать exists:

select a.col1, a.col2, . . .
from t1 a union all
select b.col1, b.col2, . . .
from t2 b union all
select c.col1, c.col2, . . .
from t3 c
where not exists (select 1 from t2 b where c.col1 = b.col1);

Примечание. Используйте явное имя столбца в union all.

1 голос
/ 05 мая 2020

Я думаю, что вы хотите NOT EXISTS:

select * from t1
union 
select * from t2
union 
select * from t3
where not exists (
  select 1 from t2
  where t2.col1 = t3.col1
)

В этом запросе строки t3 будут включены в окончательный результат, только если значение col1 не существует также в любая из строк t2.

...