仅当自动增量数据相等时,才从另一个表列更新mysql列

时间:2016-02-05 07:50:57

标签: mysql sql mysqli mysql-workbench mysqldump

我有一个包含2个表的数据库。在表1中有两列:

columnA(自动增量)和columnB(文本)

并在表2中: columnC(自动增量)和columnD(文本)

仅当自动增量列等于时,我才想用columnD中的数据替换(复制)columnB中的数据。

我试过这个,但不正确:

UPDATE table1 
   SET columnB = (
      SELECT columnD 
      FROM table2 WHERE (
         SELECT columnA FROM table1 = SELECT columnC FROM table2)

提前感谢您的帮助! :)

3 个答案:

答案 0 :(得分:0)

您可以使用INNER JOIN更新UPDATE:

UPDATE `table1` as a
INNER join table2 b on a.columnA = b.columnC
SET a.`columnB` = b.`columnD`
-- WHERE clause if needed ...
  

请参阅:   SQL Server - inner join when updating

答案 1 :(得分:-1)

您可以使用左连接: UPDATE table1 t1 left join table2 t2 on t1.columnA=t2.columnC set t1.columnB=t2.columnD where t2.columnc is not null

答案 2 :(得分:-1)

您尝试使用一个查询更新columnB,这意味着无论columnA和columnC是否相等。我建议创建一个过程,在那里实现if语句,然后简单地调用该过程。