SQL INSERT及批量的几种方式总结
1、常规INSERT写法
?INSERT INTO ... VALUES (...);
1 | INSERT INTO 表名( `字段1`, `字段2`) VALUES ( '字段1的值' , '字段2的值' ); |
2、SELECT语句返回值INSERT
INSERT INTO ...VALUES (..., (select ...));
INSERT INTO 表名1(`字段1`, `字段2`)
VALUES (字段1的值, (select 查询字段 from 表名2 where 条件));
也可以变化为查询多个字段,再新增数据
?INSERT INTO ...VALUES (select ...);
1 2 3 4 5 6 7 8 | INSERT IGNORE INTO `表名1` ( `字段1`, `字段2` ) SELECT `字段3` AS 字段1, '字段4' AS 字段2 FROM `表名2` WHERE 条件 |
注意:查询出来必须只有一个行
3、批量多行INSERT
INSERT INTO ... VALUES (...), (...),(...);
?1 2 3 4 | INSERT INTO 表名(字段1, 字段2) VALUES (字段1数据, 字段2数据), (字段1数据, 字段2数据), (字段1数据, 字段2数据); |
或者多行查询后新增,
INSERT INTO ... VALUES (...,select...), (...,select...),(...,select...);
?1 2 3 4 5 | INSERT INTO 表名1(`字段1`, `字段2`) VALUES (字段1的值, ( select 查询字段 from 表名2 where 条件)), (字段1的值, ( select 查询字段 from 表名3 where 条件)), (字段1的值, ( select 查询字段 from 表名4 where 条件)); |
或者使用union all:
?INSERT INTO ...
(SELECT ...,(select ...) ) union all
(SELECT ...,(select ...) ) union all
(SELECT ...,(select ...) );
1 2 3 4 | INSERT INTO 表名1 (`字段1`, `字段2`) ( SELECT 字段1的值,( select 查询字段 from 表名2 where 条件) FROM 表名3 WHERE 条件) union all ( SELECT 字段1的值,( select 查询字段 from 表名2 where 条件) FROM 表名3 WHERE 条件) union all ( SELECT 字段1的值,( select 查询字段 from 表名3 where 条件) FROM 表名4 WHERE 条件); |
分享一下、日常使用到几种写法,如有错误,欢迎指正。
附:插入检索出的数据
?1 2 3 4 5 6 7 8 9 10 11 | INSERT INTO Customers(ID, name , address, city, country) SELECT ID, name , address, city, country from Custnew; |
总结
到此这篇关于SQL INSERT及批量的几种方式的文章就介绍到这了,更多相关SQL INSERT批量方式内容请搜索服务器之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持服务器之家!
原文链接:https://blog.csdn.net/star_flush/article/details/127205393
1.本站遵循行业规范,任何转载的稿件都会明确标注作者和来源;2.本站的原创文章,请转载时务必注明文章作者和来源,不尊重原创的行为我们将追究责任;3.作者投稿可能会经我们编辑修改或补充。