2017-01-29 3 views
0

Есть две таблицы с именем TEST1 и TEST2, каждая из которых имеет два столбца, идентификатор и имя, как показано ниже.Sql обновить столбец с соединением

TEST1 
ID NAME 
1 BOB 
2 MIKE 
3 TOM 
4 TAMA 

TEST2 
    ID NAME 
    1 RAMIN 
    2 RAHIM 
    3 RONA 
    4 ZAK 
    6 ZENO 
    7 YOURA 
    8 SONE 

я хочу, чтобы обновить таблицу TEST1 (имя) Колонка со значениями столбцов TEST2 (имя), если ID в таблице TEST1 сочетается с ID в таблице TEST2.

работает под запрос приведет это Сообщ ошибка "ORA-00933 ВЭ: команда SQL не правильно закончился"

UPDATE tbl_test1 
SET tbl_test1.NAME = tbl_test2.NAME 
FROM tbl_test1 
    INNER JOIN tbl_test2 
      ON tbl_test1.id = tbl_test2.id 
+0

привет Mureinik я искал StackOverflow, но не может найти его, можете ли вы plz отправить мне ссылку, на которую он ответил, потому что я проверил, что нашел немного другое, что не могло решить мою проблему. –

+0

В этой краткой статье в документации показан правильный синтаксис для обновления через объединение в Oracle, а также наиболее распространенная ошибка вы можете запустите (когда вы используете правильный синтаксис), причину этого и как его исправить: http://stackoverflow.com/documentation/oracle/8061/update-with-joins#t=201701291448187158868 – mathguy

ответ

0

Лучше использовать MERGE здесь:

merge into tbl_test1 t 
using tbl_test2 t2 on (t.id = t2.id) 
when matched then 
    update set t.name = t2.name; 
+0

теперь он метает ОР-01779: не может изменить столбец, который отображает на не сохранившееся ключа таблицы –

+0

UPDATE (SELECT t1.name t1name, t2.name t2name ОТ TBL_TEST1 t1 INNER JOIN t2 ON TBL_TEST2 t1.ID = t2.ID ) set t1name = t2name –

+0

@Mellad Я обновил ответ. Попробуйте сейчас – GurV

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