使用top in while循环</archivetable>插入<archivetable>

时间:2010-09-17 12:38:29

标签: sql-server

我需要使用SQL语句将Order表归档到OrderArchive表

订单表有10,000条记录。

我需要从Order中插入OrderArchive表,并在while循环中输入前1000行。

如何在SQL Server中实现此目的

感谢。

1 个答案:

答案 0 :(得分:1)

while 1=1
begin

insert into OrderArchive
select top 1000 * from Order o
where not exists (select top 1 1 from OrderArchive oa where oa.id = o.id)

if @@rowcount = 0 
break;

end

如果要删除已删除的行并将其插入存档,则可以使用更好的解决方案:

delete o
output deleted.* into OrderArchive
from Order o
where o.ToDelete = 1