【问题标题】:mysql - updating rows between tablesmysql - 更新表之间的行
【发布时间】:2011-02-07 19:59:50
【问题描述】:

我有两个结构相同的表。

old_table 看起来像这样(例如,不是实际的表):

Name  -  DOB  - id
John  -  xxxx - 344

new_table 看起来像这样:

Name  - DOB  - id
John  - 1980 - 344

new_table 填充了 DOB 列的地方。ID 字段(唯一)和结构的其余部分在表之间是相同的。我想用 ID 字段相同的 new_table 中的值更新 old_table 中的 DOB 字段(因此在上面的示例中,所有行和 id 的 'id'=344 等)。

我正在考虑使用: INSERT INTO old_table (DOB) SELECT DOB FROM new_table WHERE...

但后来我的 mysql 知识逐渐消失。我什至应该使用 INSERT 还是可以在这里使用 UPDATE ?以及如何只从old_table中提取DOB值,其中ID字段= new_table的ID字段?

谢谢..

【问题讨论】:

    标签: mysql sql-update


    【解决方案1】:
    UPDATE old_table, new_table
        SET old_table.DOB = new_table.DOB
        WHERE old_table.id = new_table.id
    

    编辑:基于 OP 的评论

    UPDATE old_table, new_table
        SET old_table.DOB = new_table.DOB
        WHERE old_table.id = new_table.id
            AND old_table.DOB = 'xxxx'
            AND old_table.field4 = '-'
    

    【讨论】:

    • 这很好用,但如果我只想更新行 WHERE old_table.DOB = 'xxxx' AND old_table.field4 = '-' 怎么办?
    • @user410341:只需将这些条件添加到WHERE 子句中。查看我的编辑。
    【解决方案2】:

    使用更新 更新old table ot 设置DOB=(从newTable nt 中选择出生日期,其中 nt.id=ot.id) 类似的东西应该可以工作

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-06-26
      • 2021-07-19
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-10-31
      • 2020-01-26
      相关资源
      最近更新 更多