Мне нужно обновить несколько столбцов в одной таблице. Однако значения, которые мне нужно обновить, поступают из разных таблиц. В настоящее время у меня есть инструкции по обновлению. Проблема в том, что у меня много столбцов для обновления и запуска многих операторов обновлений, что вызывает много ошибок и проблем с производительностью.Обновление нескольких столбцов, где значения из разных таблиц - Oracle
Есть ли способ, чтобы я мог объединить их в один оператор обновления? Этих два примера из моего списка операторов обновления я сейчас:
UPDATE table1 t1
SET t1.col1 = (
SELECT col7
FROM table1 t1b, table2 t2
WHERE t1b.col2 = t2.col2
AND t1b.col3 = t2.col3
AND t1b.col2 = t1.col2)
WHERE t1.col4 = 0
AND t1.col2 IN (SELECT col2 FROM table2);
UPDATE table1 t1
SET t1.col5 = (
SELECT col6
FROM table1 t1c, table3 t3
WHERE t1c.col2 = t3.col2
AND t1c.col3 = t3.col3
AND t1c.col2 = t1.col2)
WHERE t1.col4 = 0
AND t1.col2 IN (SELECT col2 FROM table3);
Благодарим за отзыв. Я изменил соединения на левые соединения, но это не дало мне правильных результатов. Обратите внимание на это условие в моих предложениях WHERE: И t1.col2 IN (SELECT col2 FROM table3); и AND t1.col2 IN (SELECT col2 FROM table2); Мне нужно все в таблице1 присоединяться к table2 и table3, но я хочу только обновить записи, которые существуют в таблице2 и таблице3 – autumn
«*, но я хочу только обновить записи, которые существуют в таблице2 и таблице3 *», - тогда вам нужно внутреннее соединение не является внешним соединением –
, но мне нужно объединить все в таблице1 в таблицу3, если я использую JOIN, он присоединится к результатам таблицы1, присоединив table2 к таблице3, а не присоединяется ко всему в таблице1 к таблице3. – autumn