使用WHERE子句的多个表的MySQL UPDATE语法

时间:2013-02-23 06:37:02

标签: mysql sql sql-update

案例:

如何使用table1table2相等的数据更新id

问题:

当我运行以下更新语句时,它会更新table1中的所有记录(即使idtable1中的table2字段不存在)。< / p>

如何使用多重更新表语法,仅更新table1 id table2UPDATE table1,table2 SET table1.value=table2.value WHERE table2.id=table1.id 所在位置的记录?

{{1}}

提前致谢。

4 个答案:

答案 0 :(得分:25)

此处UPDATE的正确语法加入MySQL

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

答案 1 :(得分:4)

修改 对于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

答案 2 :(得分:2)

你可以试试这个:

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

答案 3 :(得分:0)

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