在单个SQL查询中插入多行数据
在单个SQL查询中插入多行数据
技术背景
在数据库操作中,有时需要一次性向表中插入多行数据。不同的数据库系统提供了不同的方法来实现这一需求,合理使用这些方法可以提高数据插入的效率。
实现步骤
SQL Server 2008及以上版本
在SQL Server 2008中,可以使用单个INSERT
语句插入多行数据,语法如下:
1 |
|
示例:
1 |
|
不过,这种语法最多只能插入1000行数据。如果需要插入超过1000行数据,可以使用SELECT
中的派生表来解决,示例如下:
1 |
|
MySQL
在MySQL中,如果要插入到单个表中,可以这样写查询语句:
1 |
|
SQL Server 2005及小数据集
可以使用INSERT with SELECT UNION ALL
方法,示例如下:
1 |
|
这种方法适用于小数据集。
核心代码
通用的多行插入(适用于支持VALUES语法的数据库)
1 |
|
最佳实践
- 对于数据量较小(少于1000行)的情况,优先使用
VALUES
语法,因为它简洁明了。 - 当数据量较大时,在SQL Server中使用
SELECT
中的派生表,避免1000行的限制。 - 根据不同的数据库系统选择合适的方法,以提高插入效率。
常见问题
- 插入行数限制:如在SQL Server中使用
VALUES
语法有1000行的限制,需要使用派生表的方法来解决。 - 兼容性问题:不同的数据库系统支持的语法可能不同,需要根据具体的数据库版本选择合适的方法。
在单个SQL查询中插入多行数据
https://119291.xyz/posts/inserting-multiple-rows-in-a-single-sql-query/