SQL无需循环声明1到n连续整数列表的实现方法咨询
无需循环生成1到n连续整数列表的SQL方案
你当前使用的是SQL Server(T-SQL)语法,完全可以不用循环,通过单条INSERT语句完成1到n整数序列的写入,常用实现方案如下:
方案1:兼容全版本SQL Server的递归CTE实现
DECLARE @n INT = 100; -- 此处修改为你需要的最大数值n DECLARE @listOfIDs TABLE (id INT); INSERT INTO @listOfIDs(id) WITH num_series AS ( SELECT 1 AS id UNION ALL SELECT id + 1 FROM num_series WHERE id < @n ) SELECT id FROM num_series OPTION (MAXRECURSION 0);
- 无需额外编写循环逻辑,递归CTE会自动生成1到n的连续整数
- 末尾的
OPTION (MAXRECURSION 0)用于解除SQL Server默认的100层递归限制,适配大数值n的生成需求,也可将0替换为自定义的最大递归层数
方案2:SQL Server 2022及以上版本专用简化写法
如果你的数据库是SQL Server 2022或更高版本,可以直接用内置的GENERATE_SERIES函数,写法更简洁性能更高:
DECLARE @n INT = 100; -- 此处修改为你需要的最大数值n DECLARE @listOfIDs TABLE (id INT); INSERT INTO @listOfIDs(id) SELECT value FROM GENERATE_SERIES(1, @n);
内容的提问来源于stack exchange,提问作者Chow Stanley
相关产品推荐
相关产品推荐

