How can INSERT INTO a table 300 times within a loop in SQL?

后端 未结 5 584
半阙折子戏
半阙折子戏 2021-02-02 06:35

I would like to insert a value retrieved from a counter in SQL and repeat it 300 times.

Something like:

DECLARE @Counter = 0;

-- BEGIN Loop 
    SET @Co         


        
相关标签:
5条回答
  • 2021-02-02 06:57
    DECLARE @first AS INT = 1
    DECLARE @last AS INT = 300
    
    WHILE(@first <= @last)
    BEGIN
        INSERT INTO tblFoo VALUES(@first)
        SET @first += 1
    END
    
    0 讨论(0)
  • 2021-02-02 06:57

    I would prevent loops in general if i can, set approaches are much more efficient:

    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

    0 讨论(0)
  • 2021-02-02 06:57

    Found some different answers that I combined to solve simulair problem:

    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;
    

    Adds 1 miljon rows with

    • id increased by one every itteration
    • num one greater then id
    • text concatenated with id-number like: text1, text2 ... text1000000
    • text2 concatenated with id-number like: otherText1, otherText2 ... otherText1000000
    0 讨论(0)
  • 2021-02-02 06:58

    In ssms we can use GO to execute same statement

    Edit This mean if you put

     some query
    
     GO n
    

    Some query will be executed n times

    0 讨论(0)
  • 2021-02-02 07:20

    You may try it like this:

    DECLARE @i int = 0
    WHILE @i < 300 
    BEGIN
        SET @i = @i + 1
        /* your code*/
    END
    
    0 讨论(0)
提交回复
热议问题