2017-02-10 2 views
1

У меня есть таблица table1 и таблица 2 Вот инструкция select.Запрос SQL Update для обновления одного столбца из 2 таблиц

SELECT table1_column1, table1_column2, table1_column3, table2_column1, 
     table2_column2, table2_column3 
FROM table1 
    , table2 
WHERE table1_column1 = table2_column1 
    AND table1_column2 = 'A' 
    AND table1_column3 <> table2_column3 

Получаем результаты, в которых table1_column3 и table2_column3 имеют разные значения. что правильно.

Я хочу обновить и заменить все значения table2_column3 с помощью table1_column3 мой оператор sql update дает мне ORA-00936: ошибка отсутствия выражения.

+5

Так что же такое заявление 'UPDATE'? –

+0

Что вы подразумеваете под "update ** all ** of table2_column3 values"? Запрос предназначен только для строк, где 'table1_column2 = 'A'' - будет ли по-прежнему одна строка в таблице1, соответствующая ** каждой строке ** в таблице2? – mathguy

ответ

2

Всякий раз, когда необходимо обновить (или вставить) таблицу на основе значений из другой таблицы, рассмотрите возможность использования merge заявление вместо update/insert:

https://docs.oracle.com/cd/B28359_01/server.111/b28286/statements_9016.htm#SQLRF01606

В вашем случае, вы, кажется, пытается сделать это:

merge into table2 t2 
    using table1 t1 
    on (t1.column1 = t2.column1 and t1.column2 = 'A') 
when matched then update set column3 = t1.column3 
    where column3 != t1.column3 
; 

Если вместо этого вы хотите сделать это с update заявление, это может помочь:

Update with joins

Смежные вопросы