MySQL 新增表中的数据为另外一个或多个表的数据(业务场景:创建关系表,复制旧表数据到新表)

问题

昨天同学问了我个问题

我想写个sql脚本,循环插入数据,数据是另一个表中的a.b字段
A表中的a.b字段数据,循环加入B表中a.b字段.就是这个意思

我问他为什么不用Java写,他说是数据维护,只能用SQL脚本,问a b表通过什么关联嘛?他回答:
没有,B表就是个新建立的关系表,B表不用在乎关系,现在是个空表,还没有数据。只需要把A表中的数据给放过去就行

他一说B表是个关系表我就知道是要干什么了

解决办法


INSERT INTO b(字段1 ,字段2) SELECT 字段1,字段2 FROM a; 

误点

他下意识的在查询之前加了个values,结果报错了,我跟他说这个语法没有values,他表示很震惊
把聊天记录发给我两个小徒儿,发现他们也都不知道insert into 后面能直接加查询语句不需要加values,其实这就是复制旧表数据到新表的原理

理解

其实之前我自己就因为要复制一个表的数据到新表里面,所以对这有点了解
我一般会把这拆开来,先写查询语句,再在前面加一个insert into 要新增的字段 表,这样,就绝对不会有什么问题了,能做到查到什么就新增什么,想要新增什么就查什么。
这种写法想要新增加一个关系表的话,就直接先连表查询,然后再在前面加一个新增语句就行啦
新建表

-- 第二步,再在前面加上要新增到哪个表个什么字段,字段的数量和对应的值要对应
insert into student_score(`student_id`,`score_id`)
-- 第一步,先查询出来要新增的所有数据
select a.name,c.id from student a left join score c on a.classNo = c.id

运行SQL

成功

猜你喜欢

转载自blog.csdn.net/weixin_46573158/article/details/126242516