Подтвердить что ты не робот

Синтаксис MySQL UPDATE с несколькими таблицами с использованием предложения WHERE

Случай:

Как обновить table1 с данными из table2, где id равно?

Проблема:

Когда я запускаю следующий оператор обновления, он обновляет все записи в table1 (даже если поле id в table1 не существует в table2).

Как я могу использовать синтаксис таблицы множественного обновления, чтобы обновлять ТОЛЬКО записи в table1 ТОЛЬКО, где id присутствует в table2 и равно?

UPDATE table1,table2
SET table1.value=table2.value 
WHERE table2.id=table1.id

Спасибо заранее.

4b9b3361

Ответ 1

здесь правильный синтаксис UPDATE с соединением в MySQL

UPDATE  table1 a
        INNER JOIN table2 b
            ON a.ID = b.ID
SET     a.value = b.value 

Ответ 2

ИЗМЕНИТЬ Для MySql это будет

UPDATE table1 t1 INNER JOIN 
       table2 t2 ON t2.id = t1.id
   SET t1.value = t2.value 

sqlfiddle

Оригинальный ответ для SQL Server

UPDATE table1
   SET table1.value = table2.value 
  FROM table1 INNER JOIN 
       table2 ON table2.id=table1.id

sqlfiddle

Ответ 3

Вы можете попробовать следующее:

UPDATE TABLE1
SET column_name = TABLE2.column_name
FROM TABLE1, TABLE2
WHERE TABLE1.id = TABLE2.id

Ответ 4

UPDATE table1
SET table1.value = (select table2.value 
WHERE table2.id=table1.id)