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

如何在SQL Server中基于1-12月范围自动批量插入12行数据

解决SQL Server自动插入12行序列数据的方法

嘿,你完全不用手动写12行INSERT语句,SQL Server里有好几种高效又简洁的自动实现方式,我给你分享几个常用的:

方法1:递归CTE生成连续序列

递归CTE是生成小范围连续数字的经典方式,代码逻辑清晰,兼容性好(几乎所有SQL Server版本都支持):

WITH MonthSequence AS (
    -- 初始化起始值:1月对应的序列值
    SELECT 1 AS column1
    UNION ALL
    -- 递归生成后续序列值,直到12
    SELECT column1 + 1 FROM MonthSequence WHERE column1 < 12
)
-- 插入到目标表
INSERT INTO YourTargetTable (column1, column2, column3)
SELECT column1, 'value2', 'value3'
FROM MonthSequence;

提示:如果需要生成超过100的序列,需要在语句末尾加OPTION (MAXRECURSION 0),但这里只有12行,完全不需要额外设置。

方法2:利用系统内置数字表

SQL Server自带的master..spt_values表包含大量通用数据,我们可以用它快速生成序列,省去递归的麻烦:

INSERT INTO YourTargetTable (column1, column2, column3)
SELECT 
    TOP 12 ROW_NUMBER() OVER (ORDER BY (SELECT NULL)) AS column1,
    'value2' AS column2,
    'value3' AS column3
FROM master..spt_values;

解释:TOP 12限制只取12行,ROW_NUMBER()生成1到12的连续序号,ORDER BY (SELECT NULL)是为了避免不必要的排序开销,因为我们只需要连续数字,不需要特定的行顺序。

方法3:GENERATE_SERIES(SQL Server 2022+专属)

如果你用的是SQL Server 2022或更高版本,直接用GENERATE_SERIES函数一步到位,代码最简洁:

INSERT INTO YourTargetTable (column1, column2, column3)
SELECT value, 'value2', 'value3'
FROM GENERATE_SERIES(1, 12);

这个函数直接生成从1到12的整数序列,完全不需要额外的逻辑处理,非常直观。

最后小提醒

记得把YourTargetTable替换成你实际要插入的表名,如果value2和value3是数值类型(不是字符串),记得去掉单引号哦!

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.14 07:00:29