Вы можете left join
две таблицы, а затем использовать coalesce()
, чтобы выбрать соответствующие значения:
select
t.*,
coalesce(n.language, o.language) language,
coalesce(n.area, o.area) area,
coalesce(n.market, o.market) market
from table_full f
left join table_old_data on o.id = f.id
left join table_new_data n on n.id = f.id
Это предполагает, что language
, area
и market
никогда не null
. Если это не случай, вы можете изменить выражения coalesce()
на:
select
t.*,
case when n.id is not null then n.language else o.language end language,
case when n.id is not null then n.area else o.area end area,
case when n.id is not null then n.market else o.market end market
from table_full f
left join table_old_data on o.id = f.id
left join table_new_data n on n.id = f.id