记一次线上数据库俩表同步字段

1.问题

因为业务改变,线上有个表的俩个字段没有同步上,所以需要同步数据,这里记录下过程。

数据库是MySQL

2.使用Update语句

# 第一种
UPDATE table1 t1 set xxx = (SELECT xxx FROM table2 t2 where t2.xxxID = t1.yyyID)

# 第二种
UPDATE table t1,
       table t2
		   set t1.xxxName = t2.yyyName,
			   t1.aaaID = t2.bbbID
WHERE t1.xxx = xxx AND ...

# 第三种
UPDATE table1 LEFT JOIN table2 ON table1.xxxID = table.yyyID SET table1.xxxName = table2.yyyName

3.更好的方法SELECT

使用UPDATE方法会导致数据更新错误,不小心清库,不是很保险。

这里可以利用SELECT CONCAT查询生成,如下:

SELECT
       CONCAT('UPDATE table1 SET xxxID = ',t1.xxxID,',aaaName = ',t1.aaaName,' WHERE ID = ',t1.ID,';') AS 执行前, 
       CONCAT('UPDATE table1 SET xxxID = ',t2.yyyID,',aaaName = ',t2.bbbName,' WHERE ID = ',t1.ID,';') AS 执行后
FROM table1 t1 LEFT JOIN table2 t2 t1.ID = t2.ID
WHERE t1.xxx = '' AND ...

查来保存'执行前的sql',然后线上执行 ‘执行后的sql’

posted @   peng_boke  阅读(46)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· AI编程工具终极对决:字节Trae VS Cursor,谁才是开发者新宠?
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
点击右上角即可分享
微信分享提示