我需要从表中复制行,其中id列作为主键,id值具有随机值

时间:2013-10-26 20:26:08

标签: sql sql-server-2008

我有一个500行的表,其中orderid列为主键,其中的值是随机的,例如10248,10250,10256,10258 ......等等,现在我有了复制前50个的代码循环中的行为2,但orderid列将增加1,代码为

create procedure USP_CopyingDuplicateRows @loop int, @top int
as 
Begin
Declare  @i int = 1,@Maxid int = 0
while(@i <= @loop)
Begin
select @Maxid = max([OrderID]) from [T_MyOrders]
insert into [T_MyOrders]([OrderID],[CustomerID] ,[EmployeeID],[OrderDate],[RequiredDate] ,[ShippedDate] ,[ShipVia],[Freight] ,[ShipName] ,[ShipAddress],[ShipCity] ,[ShipRegion] ,[ShipPostalCode],[ShipCountry] )
select top (@top) @Maxid+(row_number() over( order by [OrderID])) as [OrderID],[CustomerID] ,[EmployeeID],[OrderDate],[RequiredDate] ,[ShippedDate] ,[ShipVia],[Freight] ,[ShipName] ,[ShipAddress],[ShipCity] ,[ShipRegion] ,[ShipPostalCode],[ShipCountry] 
 from T_myorders
set @i=@i+1
END
End

但是现在我希望输出如果表以10800作为最后一个orderid结束,如果我复制前10行,那么它应该给orderid带有orderid的空位,比如前10个orderid是10248,10250 ,10251,10256,10258 ....现在输出应该显示为10801,10803,10804,10808,10810 ......这样,orderid之间的间隙i也应该被添加并显示在输出中。任何人都可以帮助

0 个答案:

没有答案