我想在一個表中插入10000條記錄,我目前在上面的代碼中插入編寫這些代碼 在SQL Server 2005如何插入記錄的N個表在單個命令
declare @n decimal(10,0);
set @n = 0;
while (@n < 10000)
begin
insert into table1 values (@n+1)
set @n = @n + 1
end
命令執行10000次,是否存在任何單個命令來執行此操作。
我想在一個表中插入10000條記錄,我目前在上面的代碼中插入編寫這些代碼 在SQL Server 2005如何插入記錄的N個表在單個命令
declare @n decimal(10,0);
set @n = 0;
while (@n < 10000)
begin
insert into table1 values (@n+1)
set @n = @n + 1
end
命令執行10000次,是否存在任何單個命令來執行此操作。
您也可以使用SYS的對象,你的優勢:
INSERT INTO table1(n)
SELECT TOP 10000 ROW_NUMBER() OVER(ORDER BY a.object_id) AS n FROM sys.objects a CROSS JOIN sys.objects b
GO
您可以使用CTE
創建一個10000條記錄的內存表,並使用它將其插入到您的實際表中。
;WITH q (n) AS (
SELECT 1
UNION ALL
SELECT n + 1
FROM q
WHERE n < 10000
)
INSERT INTO table1
SELECT * FROM q
OPTION (MAXRECURSION 0)
一個快速的方法(從HERE):
declare @t table (number int)
insert into @t
select 0
union all
select 1
union all
select 2
union all
select 3
union all
select 4
union all
select 5
union all
select 6
union all
select 7
union all
select 8
union all
select 9
insert into numbers
select
t1.number + t2.number*10 + t3.number*100
from
@t as t1,
@t as t2,
@t as t3
+1正是我所要發佈:) – AdaTheDev 2012-02-28 11:05:19
這顯然只有當sysobjects有足夠的行來笛卡爾 - 加入自己並提供足夠的行時纔有效。如果你想爲1000萬行使用這個,你可能需要多次交叉連接。 – cairnz 2012-02-28 12:56:20