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 条件);
相关推荐
需要8263 小时前
缓存与数据库一致性:延迟双删与订阅 binlog 的取舍
数据库·缓存
眼不痛请看我3 小时前
Ubuntu_22.04_LTS虚拟机安装指南
linux·数据库·ubuntu
Omics Pro3 小时前
强生:以机理为中心!虚拟细胞世界模型
数据库·人工智能·python·深度学习·算法·机器学习·自然语言处理
java资料站3 小时前
四、Spring AIAlibaba · Tools(工具调用)
数据库·sql·spring
龙腾-虎跃3 小时前
Docker 一键启动服务合集:Redis、MySQL、Kafka、MinIO、Prometheus 等(网盘转存防失效)
redis·mysql·docker·kafka·prometheus·小龙虾·miniio
步行cgn4 小时前
Spring 事务传播行为详解
java·数据库·spring
anxiao_m4 小时前
跨地域大文件怎么传?2026主流传输软件实测对比
大数据·数据库·文件传输
Su米苏4 小时前
基于 Token 预算的上下文压缩控制器(Context Compaction Controller)
前端·数据库·人工智能
暖核4 小时前
Redis 从基础到集群实战:数据类型、客户端、高可用架构完整梳理
数据库·redis·架构
神一样的老师4 小时前
WS63 访问 HTTPS 握手失败(-0x7780)根治
数据库·网络协议·https