记一次线上数据库俩表同步字段
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’
分类:
日常啦
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· AI编程工具终极对决:字节Trae VS Cursor,谁才是开发者新宠?
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!