如何将Table1的col2值更新到Table2对应col2(col1非主键)
问题修正方案
原代码的核心错误
- 更新对象搞反:你写的SQL是更新
Table1,但需求是更新Table2 - 关联条件错误:用
t1.col2 = t2.col2匹配,但Table2初始col2全是NULL,根本无法正确关联;正确的匹配逻辑应该是基于col1相等,也就是t1.col1 = t2.col1 - 字段名错误:SQL里的
Table1_id是不存在的字段,属于笔误 - 方法误用:
pd.read_sql_query是用来执行查询并返回DataFrame的,执行更新操作应该用数据库连接的execute方法
修正后的代码
根据你使用的数据库类型,选择对应的SQL语句:
适用于MySQL的写法
# 执行更新操作 connection.execute(""" UPDATE Table2 t2 INNER JOIN Table1 t1 ON t1.col1 = t2.col1 SET t2.col2 = t1.col2 """) # 提交事务(如果连接没有自动提交的话) connection.commit()
适用于SQL Server的写法
connection.execute(""" UPDATE t2 SET t2.col2 = t1.col2 FROM Table2 t2 INNER JOIN Table1 t1 ON t1.col1 = t2.col1 """) connection.commit()
验证结果
执行后Table2的col2会被正确更新为与Table1中col1匹配的对应值,达到预期输出效果。
内容的提问来源于stack exchange,提问作者mass
相关产品推荐
相关产品推荐

