SQL INSERT批量插入方式

1、常规INSERT写法

复制代码
INSERT INTO ... VALUES (...);

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 ...);

INSERT IGNORE INTO `表名1` (
`字段1`,
`字段2`
)
SELECT
`字段3` AS 字段1,
'字段4' AS 字段2
FROM `表名2` WHERE 条件
注意:查询出来必须只有一个行

3、批量多行INSERT

复制代码
INSERT INTO ... VALUES (...), (...),(...);

INSERT INTO 表名(字段1, 字段2)
VALUES (字段1数据, 字段2数据),
(字段1数据, 字段2数据),
(字段1数据, 字段2数据);

或者多行查询后新增

复制代码
INSERT INTO ... VALUES (...,select...), (...,select...),(...,select...);

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 ...) );

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 条件);
相关推荐
言之。18 分钟前
Django REST Framework 中 @action 装饰器详解
数据库·sqlite
十八旬2 小时前
苍穹外卖项目实战(day7-1)-缓存菜品和缓存套餐功能-记录实战教程、问题的解决方法以及完整代码
java·数据库·spring boot·redis·缓存·spring cache
Java水解3 小时前
【MySQL】数据库基础
后端·mysql
沃夫上校3 小时前
MySQL 中文拼音排序问题
java·mysql
要一起看日出3 小时前
MVCC-多版本并发控制
数据库·mysql·mvcc
Hx__3 小时前
MySQL InnoDB 的 MVCC 机制
数据库·mysql
速易达网络3 小时前
ASP.NET MVC 连接 MySQL 数据库查询示例
数据库·asp.net·mvc
玉衡子4 小时前
MySQL基础架构全面解析
数据库·后端
梦中的天之酒壶4 小时前
Redis Stack扩展功能
数据库·redis·bootstrap
emma羊羊4 小时前
【 SQL注入漏洞靶场】第二关文件读写
sql·网络安全·靶场·sql注入