Я знаю, что в PL / SQL нет оператора Update-Join. Раньше я писал T-SQL.
У меня есть две таблицы.
Alex_Table1
---------------------------
PK VAL
---------------------------
1 Value1
2 Value2
3 Value3
Alex_Table2
---------------------------
PK VAL
---------------------------
1 Value1_2
3 Value3_2
Я хочу обновить VAL с Alex_Table2 до Alex_Table1, соединяясь по столбцу PK.
В T-SQL это просто
update t1 set t1.VAL = t2.VAL
from
Alex_Table1 t1
inner join Alex_Table2 t2 on t1.PK = t2.PK;
И результат, который я ожидал
Alex_Table1
---------------------------
PK VAL
---------------------------
1 Value1_2
2 Value2
3 Value3_2
У меня вопрос, как это сделать в PL / SQL? Спасибо!
Обновление
Спасибо, Cybernate и ypercube дали мне два полезных решения. Они оба работают. Тем не менее, я хочу сообщить вам производительность между этими двумя утверждениями.
Моя фактическая таблица содержит 80 000 записей, и только 3000 требует обновления.
MERGE
оператор занимает 0,533 секунды.
UPDATE EXISTS
утверждение занимает более 3 минут (я не измерял фактическое время. Я завершил процесс через 3 минуты.)