在没有数字表

时间:2017-01-31 15:27:59

标签: sql sql-server

如何使用存储过程重复现有行最多10,000次?我们必须使用while循环吗? 我的表Student有3列,如Name, ID, Marks.,目前有10条记录。

Sample Data:
ID  Name  Marks
1   John   88
2   Dave   98

Expected Data:
ID  Name  Marks
    1   John   88
    2   Dave   98
    1   John   88
    2   Dave   98
    1   John   88
    2   Dave   98
    1   John   88
    2   Dave   98

预期的数据行数应为10,000。

2 个答案:

答案 0 :(得分:2)

如果您不想/不想使用数字表,可以在SSMS中使用GO来指定执行语句的次数:

Insert  Student
        (Id, Name, Marks)
Select  Distinct Id, Name, Marks
From    Student
Go 5000

上述语句将执行5,000次,从而导致插入10,000条记录。

答案 1 :(得分:1)

  

编辑 - 错过10,000行计数...已更正

这是一个临时数字/计数表...这算不算?

Declare @YourTable table (ID int,Name varchar(50),Marks int)
Insert Into @YourTable values
(1,'John',88),
(2,'Dave',98)

;with cte0(N) As (Select 1 From (Values(1),(1),(1),(1),(1),(1),(1),(1),(1),(1)) N(N)),
      cteN(N) As (Select Top (10000/(select count(*) from @YourTable)) Row_Number() over (Order By (Select NULL)) From cte0 N1, cte0 N2, cte0 N3, cte0 N4) -- 10,000
Select A.*
 From  @YourTable A
 Cross Join cteN B

或其他选项

Select A.*
 From  @YourTable A
 Cross Join (Select Top (10000/(select count(*) from @YourTable)) N=Row_Number() Over (Order By (Select Null)) From master..spt_values N1,master..spt_values N2) B