如何在SQL循环中插入表300次?

时间:2014-02-21 08:19:45

标签: sql-server tsql loops insert

我想在SQL中插入从计数器中检索到的值,并重复300次。

类似的东西:

DECLARE @Counter = 0;

-- BEGIN Loop 
    SET @Counter = @Counter + 1 
    INSERT INTO tblFoo VALUES(@Counter)
-- REPEAT 300 times

我怎样才能做到这一点? 感谢

5 个答案:

答案 0 :(得分:30)

你可以这样试试:

DECLARE @i int = 0
WHILE @i < 300 
BEGIN
    SET @i = @i + 1
    /* your code*/
END

答案 1 :(得分:13)

DECLARE @first AS INT = 1
DECLARE @last AS INT = 300

WHILE(@first <= @last)
BEGIN
    INSERT INTO tblFoo VALUES(@first)
    SET @first += 1
END

答案 2 :(得分:5)

如果可以,我会阻止循环,设置方法效率更高:

INSERT INTO tblFoo
  SELECT TOP (300) n = ROW_NUMBER()OVER (ORDER BY [object_id]) 
  FROM sys.all_objects ORDER BY n;

Demo

Generate a set or sequence without loops

答案 3 :(得分:1)

在ssms中,我们可以使用GO来执行相同的语句

修改 这意味着如果你把

 some query

 GO n

某些查询将被执行n次

答案 4 :(得分:-1)

找到了一些我用来解决Simulair问题的答案:

CREATE TABLE nummer (ID INTEGER PRIMARY KEY, num, text, text2);
WITH RECURSIVE
  for(i) AS (VALUES(1) UNION ALL SELECT i+1 FROM for WHERE i < 1000000)
INSERT INTO nummer SELECT i, i+1, "text" || i, "otherText" || i FROM for;

添加1 miljon行,其中

  • id每增加一个变数
  • 比id大一号
  • 以id-number连接的文本,例如:text1,text2 ... text1000000
  • text2与id-number串联,例如:otherText1,otherText2 ... otherText1000000