Я хочу обновить одну таблицу со значениями из другой таблицы, если эти значения существуют. Я использую RunSqlTasklet
в Spring для запуска этого SQL, но на самом деле буду использовать postgres, и моя версия не может обрабатывать слияния, поэтому, пожалуйста, никаких ответов на слияния.
Пример:
После обновления хочу, чтобы таблица 1 выглядела как ниже
Приведенное ниже описание работает, но выполнение отдельной, определенной части столбца снова и снова, кажется, можно улучшить.
UPDATE schema.TABLE1 t1
SET COLUMN1 = (SELECT t2.COLUMN1 FROM schema.TABLE2 t2 WHERE t1.COLUMN4 = t2.COLUMN4 AND t1.COLUMN5 = t2.COLUMN5)
,COLUMN2 = (SELECT t2.COLUMN2 FROM schema.TABLE2 t2 WHERE t1.COLUMN4 = t2.COLUMN4 AND t1.COLUMN5 = t2.COLUMN5)
,COLUMN3 = (SELECT t2.COLUMN3 FROM schema.TABLE2 t2 WHERE t1.COLUMN4 = t2.COLUMN4 AND t1.COLUMN5 = t2.COLUMN5)
WHERE EXISTS (
SELECT 1 FROM schema.TABLE2 t2
WHERE t1.COLUMN4 = t2.COLUMN4
AND t1.COLUMN5 = t2.COLUMN5
);
Как обновить вышеприведенный запрос, чтобы обновить TABLE1 значениями из TABLE2, не задавая столбцы из TABLE1 для конкретных отдельных операторов выбора, указанных выше?
У меня есть Google, и вышеприведенное - единственное, что, похоже, работает, но я так не думаю.