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 条件);
相关推荐
IvorySQL3 小时前
PostgreSQL 技术日报 (3月7日)|生态更新与内核性能讨论
数据库·postgresql·开源
赵渝强老师4 小时前
【赵渝强老师】金仓数据库的数据文件
数据库·国产数据库·kingbase·金仓数据库
随逸1777 小时前
《Milvus向量数据库从入门到实战,手把手搭建语义检索系统》
数据库
神秘的猪头7 小时前
🚀 React 开发者进阶:RAG 核心——手把手带你玩转 Milvus 向量数据库
数据库·后端·llm
0xDevNull1 天前
MySQL索引进阶用法
后端·mysql
0xDevNull1 天前
MySQL索引用法
mysql
IvorySQL1 天前
PostgreSQL 技术日报 (3月6日)|为什么 Ctrl-C 在 psql 里让人不安?
数据库·postgresql·开源
NineData1 天前
数据库管理工具NineData,一年进化成为数万+开发者的首选数据库工具?
运维·数据结构·数据库
程序员小崔日记1 天前
一篇文章彻底搞懂 MySQL 和 Redis:原理、区别、项目用法全解析(建议收藏)
redis·mysql·项目实战