You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

SQL如何遍历整数列表批量插入仅单值不同的多行记录

方案1:单条INSERT批量插入(所有主流数据库通用)

这是门槛最低的实现方式,无需创建额外对象,直接把可变值拼接到VALUES列表后即可,语法如下:

INSERT INTO tblTableName
    (columnName1, columnName2, columnName3, columnName4)
VALUES
    (sameData1, sameData2, sameData3, 907),
    (sameData1, sameData2, sameData3, 908),
    (sameData1, sameData2, sameData3, 875),
    -- 按该格式追加所有可变整数对应的行即可
    (sameData1, sameData2, sameData3, 885);

该方案的优势:

  • 语法完全通用,支持MySQL、PostgreSQL、SQL Server、SQLite等所有主流关系型数据库
  • 无需创建临时表、数组等额外对象,执行一次即可完成所有行插入
  • 绝大多数数据库支持单次插入数千行,只要可变值数量不过万都可以直接使用
方案2:数组映射插入(适合可变值数量极多的场景,按数据库类型选择实现)

如果可变值数量过万,或者不想重复写固定值部分,可以用对应数据库的数组解析功能实现,仅需输入一次固定值:

MySQL 实现

INSERT INTO tblTableName (columnName1, columnName2, columnName3, columnName4)
SELECT 
    'sameData1', -- 替换为你实际的固定值
    'sameData2',
    'sameData3',
    variable_value
FROM JSON_TABLE(
    '[907, 908, 875, 876, 878, 885]', -- 直接把所有可变整数放到这个数组中
    '$[*]' COLUMNS (variable_value INT PATH '$')
) AS tmp;

PostgreSQL 实现

INSERT INTO tblTableName (columnName1, columnName2, columnName3, columnName4)
SELECT 
    'sameData1', -- 替换为实际固定值
    'sameData2',
    'sameData3',
    unnest(ARRAY[907, 908, 875, 876, 878, 885]); -- 把可变值放到这个数组中即可

SQL Server 实现

INSERT INTO tblTableName (columnName1, columnName2, columnName3, columnName4)
SELECT 
    'sameData1', -- 替换为实际固定值
    'sameData2',
    'sameData3',
    CAST(value AS INT)
FROM STRING_SPLIT('907,908,875,876,878,885', ','); -- 直接把所有可变值用逗号拼接放在引号中
额外提示

如果你的可变值是连续整数,还可以用递归CTE自动生成序列,不用手动输入所有值,通用示例如下:

WITH RECURSIVE num_seq AS (
    SELECT 900 AS n -- 序列起始值
    UNION ALL
    SELECT n + 1 FROM num_seq WHERE n < 1000 -- 序列结束值,这里会生成900-1000的所有整数
)
INSERT INTO tblTableName (columnName1, columnName2, columnName3, columnName4)
SELECT 'sameData1', 'sameData2', 'sameData3', n FROM num_seq;

如果遇到单条INSERT长度限制,拆分为2-3条批量INSERT即可,效率远高于单次插入一行。

内容的提问来源于stack exchange,提问作者AnthonyGFS

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.05 03:57:03