如何基于关联ID将table2的name字段数据插入table1?
解决table1关联table2填充name字段的问题
嘿,我太懂你这个困扰了!你现在用的INSERT语句其实走偏了方向——INSERT是用来往table1里新增全新的数据行的,而你的需求是要更新table1中已有的行,把对应table2的name字段填充进去,这就难怪WHERE子句识别不了table1啦,因为INSERT操作里还没生成这些待插入的行呢。
正确的做法是用UPDATE结合JOIN来实现,直接把两个表通过关联字段关联起来,批量更新目标字段:
UPDATE table1 INNER JOIN table2 ON table1.table2Id = table2.id SET table1.name = table2.name;
简单解释下这个语句的逻辑:
INNER JOIN table2 ON table1.table2Id = table2.id:把table1和table2中关联字段匹配的行对应起来SET table1.name = table2.name:把匹配到的table2的name值,赋值给table1对应的行的name字段
这样只会更新table1中存在对应table2Id的行,没有匹配到的行的name字段会保持原样,完全符合你的需求。
内容的提问来源于stack exchange,提问作者louis amoros
相关产品推荐
相关产品推荐

