求MYSQL如何`批量`更新`多表`多字段`?

table1包含:ID,name,age,stat1,stat2,stat3,....stat100N个字段table2包含:ID,name,age,stat1,stat... table1 包含:ID,name,age,stat1,stat2,stat3,....stat100 N个字段
table2 包含:ID,name,age,stat1,stat2,stat3,....stat50 少50个字段,包含的字段在T1里都有。
现在想要用T2的所有数据,去更新 T1的数据,如果用REPLAYCE INTO的话,原表没有被更新的50个字段的数据都会丢失。inner join ON DUPLICATE KEY UPDATE 语法也试过了,但总报错。
在网上搜了很久了,批量的都不好用,希望有高手指教,谢谢。
展开
 我来答
霜_河
推荐于2020-12-29 · TA获得超过479个赞
知道小有建树答主
回答量:277
采纳率:0%
帮助的人:211万
展开全部
思路:找到table2的所有字段,然后在table1中更新这些字段。

1:如果你要求在table1中插入table2的数据

SET @pstSql =CONCAT('INSERT INTO table1 (',
(SELECT GROUP_CONCAT(column_name) FROM information_schema.columns WHERE table_name='table2' AND table_schema='你的表所在的数据库名称'),
') SELECT ',(SELECT GROUP_CONCAT(column_name) FROM information_schema.columns WHERE table_name='table2' AND table_schema='你的表所在的数据库名称'),' From table2');
PREPARE stmt FROM @pstSql;
EXECUTE stmt;

2:如果你要求将table2的数据按照ID更新到table1中
SET @pstSql =CONCAT('update table1 a,table2 b set ',
(SELECT GROUP_CONCAT('a.',column_name,'=b.',column_name)
FROM information_schema.columns WHERE table_name='table2' AND column_name !='id' AND table_schema='你的表所在的数据库名称'),
' where a.id=b.id');
PREPARE stmt FROM @pstSql;
EXECUTE stmt;
本回答被提问者和网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
衡阳封云凯律师
2013-08-20 · 律师
个人认证用户
衡阳封云凯律师
采纳数:192 获赞数:3010

向TA提问 私信TA
展开全部
求MYSQL如何`批量`更新`多表`多字段`?

这个问题我知道

推荐您使用“赛思QQ陌生人推广小助手 ”

不用加好友 直接发消息

日引1万独立IP 绝对没有问题
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式