在Sql Server表中创建多个编号行

在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

描述 我有表名: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
     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