source

SQL에서 루프 내에서 테이블에 300번 삽입하려면 어떻게 해야 합니까?

manysource 2023. 10. 2. 15:06

SQL에서 루프 내에서 테이블에 300번 삽입하려면 어떻게 해야 합니까?

카운터에서 검색한 값을 SQL에 삽입해서 300번 반복하고 싶습니다.

다음과 같은 경우:

DECLARE @Counter = 0;

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

어떻게 하면 이것을 이룰 수 있을까요?감사해요.

다음과 같이 시도해 볼 수 있습니다.

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

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

가능하다면 일반적으로 루프를 방지할 수 있습니다. 설정된 접근 방식이 훨씬 더 효율적입니다.

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

Demo

루프가 없는 집합 또는 시퀀스 생성

sms에서 GO를 사용하여 동일한 문을 실행할 수 있습니다.

편집 이것은 다음을 입력할 경우를 의미합니다.

 some query

 GO n

일부 쿼리는 n번 실행됩니다.

유사한 문제를 해결하기 위해 결합한 몇 가지 다른 답변을 찾았습니다.

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;

100만 행 추가

  • ID는 반복할 때마다 하나씩 증가합니다.
  • id보다 큰 1번
  • id-number로 연결된 텍스트: text1, text2 ... text1000000
  • text2는 id-number와 연결되어 있습니다: otherText1, otherText2...기타텍스트100000000

언급URL : https://stackoverflow.com/questions/21928952/how-can-insert-into-a-table-300-times-within-a-loop-in-sql