У меня есть 2 таблицы с нижними столбцами
Table1
col1 col2 col3 val
11 221 38 10
null 90 null 989
78 90 null 77
table2
col1 col2 col3
12 221 78
23 null 67
78 90 null
Я хочу сначала объединить эти 2 таблицы на col1, если значения совпадают, затем остановите, если не соедините на col2, если совпадения остановите, иначе соединитесь на col3 и заполните val, если какой-либо из столбцов будет совпадать, в противном случае пустое значение и какой-либо другой совпадающий столбец, затем заполните этот столбец в столбце matchcol. Таким образом, вывод должен выглядеть следующим образом:
col1 col2 col3 val matchingcol
11 221 38 10 col2
null 90 null null null
78 90 null 77 col1
Я смог сделать это, используя запрос ниже, но производительность очень низкая. Пожалуйста, дайте мне знать, если есть какой-нибудь лучший способ написания ниже для более быстрой производительности
select *
from table1 t1 left join
table2 t2_1
on t2_1.col1 = t1.col1 left join
table2 t2_2
on t2_2.col2 = t1.col2 and t2_1.col1
left join table2 t2_3 on t2_3.col3 = t1.col3 and t2_2.col2 is null
ps: я задавал тот же вопрос раньше, но лучшего ответа не было