잠시 또는 for 루프를 사용하지 않고 단일 삽입에 두 번 이상 레코드를 삽입하는 방법이 있습니까?SQL 삽입시 레코드를 복제하려고합니다
감사
INSERT INTO TABLE2 ((VALUE,VALUE)
SELECT VALUE,VALUE FROM TABLE1)) * 2
잠시 또는 for 루프를 사용하지 않고 단일 삽입에 두 번 이상 레코드를 삽입하는 방법이 있습니까?SQL 삽입시 레코드를 복제하려고합니다
감사
INSERT INTO TABLE2 ((VALUE,VALUE)
SELECT VALUE,VALUE FROM TABLE1)) * 2
당신은 2 개 행이 테이블에 CROSS JOIN
해야합니다. 다음은 SQL Server에서 작동합니다.
INSERT INTO TABLE2 ((VALUE,VALUE)
SELECT VALUE,VALUE
FROM TABLE1, (SELECT 1 UNION ALL SELECT 2) T(C)
당신이 만드는 여러 번호 테이블이있는 경우도
SELECT VALUE,VALUE
FROM TABLE1 JOIN Numbers ON N <=2
2 개 기록
INSERT INTO TABLE2 ((VALUE,VALUE)
SELECT VALUE,VALUE FROM TABLE1, dummytable))
Union all은 중복 레코드를 기록하지만 동적 레코드는 아닙니다. 경우에 따라 레코드를 3 ~ 4 번 복제해야 할 수도 있습니다. 아마 내가 사용할 수있는 모든 것이 while 루프일까요? – tdjfdjdj
@user - 내 대답에 두 번째 제안에 따라 숫자 표를 사용할 수 있습니다. –
이 아닌 우아한 방법으로 더미 테이블을 만들 --first 할 수 있지만, 쉽게 일할 수 있습니다. 당신이 기록의 충분히 높은 번호와 테이블이있는 경우에는 십자가가 TOP 절에 가입 할 수있는이 당신이 함께 TOP을 변경해야합니다은 다른 DBMS에서 일할 수 있도록, MQ SQLSERVER 작동
INSERT INTO TABLE2
SELECT VALUE,VALUE FROM TABLE1
cross join (select top 2 TABLE_DUMMY) as DUMMY
DBMS가 필요로하는 키워드
또한 '값 1, 값 1, 테이블 1의 모든 선택 값, 테이블 1의 값 2 선택'을 할 수 있습니다. 이렇게하면 한 번 삽입되는 레코드와 두 번 삽입되는 레코드를 선택하는 필터를 추가 할 가능성이 있습니다. – mellamokb
좋은 포인트. 원본 테이블이 두 번 스캔되는 것을 의미합니다. –
사실, 뭔가를 통해 포함시킬 레코드 수를 동적으로 결정할 수 없습니까? 'SELECT 값, FROM Table1 JOIN Numbers on N <= Value' 값을 포함하고 있습니까? – mellamokb