【问题标题】:Update MySQL column from another table column only if the autoincrement data is equal仅当自动增量数据相等时才从另一个表列更新 mysql 列
【发布时间】: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)

提前感谢您的帮助! :)

【问题讨论】:

    标签: mysql sql mysqli mysql-workbench mysqldump


    【解决方案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 的代码。你能再试一次吗?
    • 我错过了别名 ab。这是更新: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 语句,然后简单地调用该过程。

    【讨论】:

      猜你喜欢
      • 2013-08-26
      • 2021-08-31
      • 1970-01-01
      • 2018-06-25
      • 2014-11-16
      • 1970-01-01
      • 1970-01-01
      • 2018-03-07
      • 1970-01-01
      相关资源
      最近更新 更多