sql insert into select(使用select结果进行insert) 20257558编辑

Heaven helps those who help themselves
资深码农+深耕理财=财富自由
欢迎关注

sql insert into select(使用select结果进行insert)

Created by Marydon on 2022-05-24 10:39

1.情景展示

现在需要将B表的数据插入A表,如何进行快速操作?

2.具体分析

批量插入,我们可以先将数据查询出来,然后再插入到指定表当中;

如何批量插入查询到的数据?

3.解决方案

以mysql进行举例说明

方式一:指定表字段;

当我们需要只往A表的部分字段插入时,使用这种方式;

比如:主键不需要我们手动插入,而是依赖mysql的主键自增属性的时候。

INSERT INTO TABLE_NAME ( CLOUMN1, CLOUMN2, COLUM3,...)
SELECT CLOUMN1, CLOUMN2, COLUM3, ...
FROM
TABLE_NAME2

说明:

当我们往A表插入数据时,使用A表自增键产生值时,会引发A表主键ID不连续的问题,即:下一次新增数据的时候,会造成ID值与批量插入ID的最大值不连续。

具体原因,及解决办法见《mysql 批量修改表主键(不连续变连续)》。

方式二:所有表字段。

当我们需要往A表中插入所有字段(包括主键)时,可以使用这种方式。

INSERT INTO TABLE_NAME select * from TABLE_NAME_bak

说明:这种方式,需要A表和B表的表字段完全保持一致。

 

说明:

在默认的事务隔离级别下:insert into a select b的操作a表示直接锁表,b表是逐条加锁。

如果要想b表避免全表扫描,我们需要对where后面的条件做索引,让我们的select查询都走索引即可。

写在最后

  哪位大佬如若发现文章存在纰漏之处或需要补充更多内容,欢迎留言!!!

 相关推荐:

与君共勉:最实用的自律是攒钱,最养眼的自律是健身,最健康的自律是早睡,最改变气质的自律是看书,最好的自律是经济独立 。

您的一个点赞,一句留言,一次打赏,就是博主创作的动力源泉!

↓↓↓↓↓↓写的不错,对你有帮助?赏博主一口饭吧↓↓↓↓↓↓

posted @   Marydon  阅读(7558)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本
· C#/.NET/.NET Core优秀项目和框架2025年2月简报
· Manus爆火,是硬核还是营销?
· 终于写完轮子一部分:tcp代理 了,记录一下
· 【杭电多校比赛记录】2025“钉耙编程”中国大学生算法设计春季联赛(1)
点击右上角即可分享
微信分享提示
sorry,本博客所有代码禁止复制,原创代码需扫码支付方可获取!
关闭

1、先加好友再付费,点我加好友;

2、代码不能满足你的需求?加好友付费定制你的专属代码!

3、付费标准及方式,点我查看详情。