在Sql Server表中创建多个编号行
描述 我有表名:tableName和列名:columnName 问题 我需要创建450行,并从1到450编号 我试过: 因为。经验 国内流离失所者 一, 二, 三, 错误: 找不到程序 我不知道要使用什么过程。在SQL Server中,可以使用递归cte:在Sql Server表中创建多个编号行,sql,sql-server,Sql,Sql Server,描述 我有表名:tableName和列名:columnName 问题 我需要创建450行,并从1到450编号 我试过: 因为。经验 国内流离失所者 一, 二, 三, 错误: 找不到程序 我不知道要使用什么过程。在SQL Server中,可以使用递归cte: with cte as ( select 1 as start, 450 as loop_end union all select c.start + 1, loop_end from cte c
with cte as (
select 1 as start, 450 as loop_end
union all
select c.start + 1, loop_end
from cte c
where c.start < loop_end
)
INSERT INTO tableName (columnName)
select c.start
from cte c
option (maxrecursion 0);
您可以使用主..[spt_值]表。这里是链接。如果您拥有主数据库和对该数据库的访问权限,这将起作用
SELECT DISTINCT n = number
FROM master..[spt_values]
WHERE number BETWEEN 1 AND 10
在这一点上,理货比rCTE更重要
如果您想要450行,那么这将起作用:
DECLARE @Rows int = 450;
WITH N AS(
SELECT N
FROM (VALUES(NULL),(NULL),(NULL),(NULL),(NULL),(NULL),(NULL),(NULL),(NULL),(NULL))N(N)),
Tally AS(
SELECT TOP (@Rows) ROW_NUMBER() OVER (ORDER BY (SELECT NULL)) AS I
FROM N N1, N N2, N N3) --1000 rows, add more cross joins for more rows
SELECT I
FROM Tally;
尝试使用while循环:
declare @num int =1
while(@num <= 450)
begin
insert into table_name select @num
set @num = @num+1
end
显示所有相关代码!您是如何创建连接/命令/执行进程的?是主进程吗?【spt_值】在这里会更好?我想听听你的意见。这不会导致从磁盘读取数据,因此可能会更快,@SurajKumar。最简单的方法是用更大的集合进行测试。当然,如果您对spt_值执行多个交叉连接,我希望上面的速度更快。好的,这可能是测试的重点,谢谢。
declare @num int =1
while(@num <= 450)
begin
insert into table_name select @num
set @num = @num+1
end