在sql中如何一次插入多条数据?

本文介绍了两种在SQL中批量插入数据的方法,一种是使用values列表直接插入,另一种是通过union all结合子查询的方式进行插入,这两种方法各有优缺点,适用于不同的场景。

 

查书看到的两种方法:

写法1:insert into tableName (列名1,列名2,列名3,列名4) values (值1,值2, 值3, 值4),(值1,值2, 值3, 值4)......

写法2:insert into tableName (列名1,列名2,列名3,列名4)   select 值1,值2,值3,值4,

       union all select 值1,值2,值3,值4

       union all select 值1,值2,值3,值4......

SQL 可以一次插入多条记录,以下是几种常见的实现方式: - **使用 `UNION` 或 `UNION ALL`**:可以将多个 `SELECT` 语句组合起来,一次插入多条记录。当插入数据相同时,使用 `UNION` 不会重复插入,除非使用了 `UNION ALL`;当插入的语句中存在 `UNION` 和 `UNION ALL` 时,还是会排除重复数据插入。示例如下: ```sql INSERT INTO admin SELECT 'abc','abc' UNION SELECT 'sfas','fasd'; ``` ```sql INSERT INTO [oa].[dbo].[dictTable] ([dictname], [dictkey], [dictvalue], [showorder]) SELECT 'sx_xmlb','XM1','项目类别1',101 UNION ALL SELECT 'sx_xmlb','XM2','项目类别2',102 UNION ALL SELECT 'sx_xmlb','XM3','项目类别3',103 UNION ALL SELECT 'sx_xmlb','XM4','项目类别4',104; ``` 这种方式适用于手动指定要插入数据,并且可以灵活控制是否排除重复数据 [^1][^3]。 - **从其他表中读取数据插入**:可以从另外的一张表或多张表中读取多条数据添加到新表中。示例如下: ```sql -- 从另外的一张表中读取多条数据添加到新表中 INSERT INTO tableName(col1,col2,col3) SELECT val1,val2,val3 FROM tagTable; -- 从其他的多张表中读取数据添加到新表中 INSERT INTO tableName(col1,col2,col3) SELECT val1,val2,val3 FROM tagTableA UNION ALL SELECT val1,val2,val3 FROM tagTableB; ``` 这种方式适用于将已有表中的数据批量迁移到新表中 [^3]。 不过,使用 `PreparedStatement` 向 SqlServer 中一次插入多条记录时,会存在一些限制。由于不知道 `VALUES` 后应该列多少个问号,而且 JDBC 对参数的个数有限制,最多 2000 个参数。以一个表三个字段为例,2000 个参数下一次性最多能插入记录数 666 条,并且生成的语句是非静态的,不能很好地作为 `PreparedStatement` 进行预编译 [^2]。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值