仅当自动增量数据相等时才从另一个表列更新 mysql 列
Posted
技术标签:
【中文标题】仅当自动增量数据相等时才从另一个表列更新 mysql 列【英文标题】:Update MySQL column from another table column only if the autoincrement data is equal 【发布时间】:2016-05-15 02:49:59 【问题描述】:我有一个包含 2 个表的数据库。在table1中有两列:
columnA(自动增量)和columnB(文本)
在表 2 中: columnC(autoincrement) 和 columnD(text)
仅当自动增量列相等时,我想用 columnD 中的数据替换(复制)columnB 中的数据。
我试过这个,但它不正确:
UPDATE table1
SET columnB = (
SELECT columnD
FROM table2 WHERE (
SELECT columnA FROM table1 = SELECT columnC FROM table2)
提前感谢您的帮助! :)
【问题讨论】:
【参考方案1】:您可以通过带有 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
【讨论】:
我已经更新了 mysql 的代码。你能再试一次吗? 我错过了别名a
和 b
。这是更新:pastie.org/10709664。上面的那些表和列确实存在于您的数据库中吗?【参考方案2】:
您可以使用左连接:
UPDATE table1 t1 left join table2 t2 on t1.columnA=t2.columnC set t1.columnB=t2.columnD where t2.columnc is not null
【讨论】:
这是一种编写内部连接的冗长方法【参考方案3】:您正在尝试使用一个查询来更新 columnB,这意味着无论 columnA 和 columnC 是否相等。我建议创建一个过程,在那里实现 if 语句,然后简单地调用该过程。
【讨论】:
以上是关于仅当自动增量数据相等时才从另一个表列更新 mysql 列的主要内容,如果未能解决你的问题,请参考以下文章