MySQL UPDATE syntax with multiple tables using WHERE clause

血红的双手。 提交于 2019-12-28 03:05:38

问题


Case:

How to update table1 with data from table2 where id is equal?

Problem:

When I run the following update statement, it updates all the records in table1 (even where the id field in table1 does not exist in table2).

How can I use the the multiple update table syntax, to update ONLY the records in table1 ONLY where the id is present in table2 and equal?

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

Thanks in advance.


回答1:


here's the correct syntax of UPDATE with join in MySQL

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



回答2:


EDIT For MySql it'll be

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

sqlfiddle

Original answer was for SQL Server

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

sqlfiddle




回答3:


You can try this:

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)


来源:https://stackoverflow.com/questions/15037883/mysql-update-syntax-with-multiple-tables-using-where-clause

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!