记一次线上数据库俩表同步字段
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’

浙公网安备 33010602011771号