我正在创建临时表,我想使用T-SQL填充0-9999的列。
create table #tmp5 (userID int)
是否有更简单的方法来填充列而不是使用循环?
答案 0 :(得分:3)
有几种方法详细{{3p>
除了循环(有和没有IDENTITY),创造性地使用CTE,ROW_NUMBER等。
答案 1 :(得分:2)
使用GO N --N=number of iterations
CREATE TABLE #tmp5 (userID int IDENTITY(0, 1))
Go
INSERT INTO #tmp5 DEFAULT VALUES
Go 10000
或者这个:
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
答案 2 :(得分:0)
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
这基本上是对所有系统对象的row_numbers,而交叉连接确保你有一大堆它们的行号。根据要创建的表的大小和/或sys.objects表的大小,您将需要更多或更少的交叉连接。