You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

MySQL如何根据table1的name自动更新table2的address?

用SQL原生命令自动实现表更新

嘿,这个需求完全不需要额外写代码,直接用数据库的UPDATE JOIN语句就能自动完成!

  • 核心逻辑:通过name字段关联两张表,批量更新table2的address字段,只修改匹配到的行,不影响无匹配的记录(比如你的例子里的daniel)。

通用SQL更新语句

针对你的场景,通用的更新命令如下:

UPDATE table2
JOIN table1 ON table2.name = table1.name
SET table2.address = table1.address;

针对你示例的效果说明

执行这条语句后会自动完成以下操作:

  1. 匹配table2和table1中name相同的行(jhonny、david、danny)
  2. 将table2中这些行的address替换为table1对应的地址
  3. 保留table2中没有匹配到的行(比如daniel)原数据不变

最终table2会完全符合你想要的结果:

jhonny 1st street、david 2nd street、danny 4th street、daniel 2nd street

实用提醒

  • 先验证再执行! 建议先跑一条查询语句确认匹配结果,避免误更新:
    SELECT table2.name, table2.address AS 原地址, table1.address AS 新地址
    FROM table2
    JOIN table1 ON table2.name = table1.name;
    
  • 不同数据库有细微语法差异:
    • PostgreSQL写法:
      UPDATE table2
      SET address = table1.address
      FROM table1
      WHERE table2.name = table1.name;
      
    • SQL Server写法:
      UPDATE t2
      SET t2.address = t1.address
      FROM table2 t2
      INNER JOIN table1 t1 ON t2.name = t1.name;
      

内容的提问来源于stack exchange,提问作者Korenron

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.28 07:24:22