Tsql 在SQLServer2008中是否有更简单的方法来填充列?

Tsql 在SQLServer2008中是否有更简单的方法来填充列?,tsql,sql-server-2008,Tsql,Sql Server 2008,我正在创建一个临时表,我想使用T-SQL填充0-9999之间的列 create table #tmp5 (userID int) 有没有更简单的方法来填充列而不是使用循环?详细介绍了几种方法 除了带标识和不带标识的循环外,创造性地使用CTE、行号等等。有几种详细的方法 除了带标识和不带标识的循环外,创造性地使用CTE、行数等。使用GO N-N=迭代次数 或者这个: CREATE TABLE #tmp5 (userID int) GO INSERT INTO #tmp5 VALUES (

我正在创建一个临时表,我想使用T-SQL填充0-9999之间的列

create table #tmp5 (userID int)

有没有更简单的方法来填充列而不是使用循环?

详细介绍了几种方法


除了带标识和不带标识的循环外,创造性地使用CTE、行号等等。

有几种详细的方法

除了带标识和不带标识的循环外,创造性地使用CTE、行数等。

使用GO N-N=迭代次数

或者这个:

CREATE TABLE #tmp5 (userID int)   
GO
INSERT INTO  #tmp5 VALUES (0)
GO
DECLARE @N int
SELECT @N=COUNT(*) FROM #tmp5
INSERT INTO  #tmp5 
SELECT userID+@N FROM #tmp5 WHERE userID+@N<10000
Go 14
使用GO N-N=迭代次数

或者这个:

CREATE TABLE #tmp5 (userID int)   
GO
INSERT INTO  #tmp5 VALUES (0)
GO
DECLARE @N int
SELECT @N=COUNT(*) FROM #tmp5
INSERT INTO  #tmp5 
SELECT userID+@N FROM #tmp5 WHERE userID+@N<10000
Go 14
这基本上是所有系统对象上的行数,交叉连接确保您有一整串的行数。根据要创建的表的大小和/或sys.objects表的大小,您将需要更多或更少的交叉联接


这基本上是所有系统对象上的行数,交叉连接确保您有一整串的行数。根据要创建的表的大小和/或sys.objects表的大小,您将需要更多或更少的交叉联接。

可能重复的伟大参考站点的可能重复。谢谢伟大的参考网站。谢谢有趣的是,我在“10000”附近得到了不正确的语法。错误消息,但仍在运行。它很有效而且很短,所以我很高兴。谢谢有趣的是,我在“10000”附近得到了不正确的语法。错误消息,但仍在运行。它很有效而且很短,所以我很高兴。谢谢
use AdventureWorks --Or any database with a sizable amount of objects in it
go

insert into #tmp5 (userID)
select top 9999
  row_number() over (order by (select null)) as UserID
from sys.objects a
cross join sys.objects b