2011-05-04 4 views

답변

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 
+0

또한 '값 1, 값 1, 테이블 1의 모든 선택 값, 테이블 1의 값 2 선택'을 할 수 있습니다. 이렇게하면 한 번 삽입되는 레코드와 두 번 삽입되는 레코드를 선택하는 필터를 추가 할 가능성이 있습니다. – mellamokb

+0

좋은 포인트. 원본 테이블이 두 번 스캔되는 것을 의미합니다. –

+0

사실, 뭔가를 통해 포함시킬 레코드 수를 동적으로 결정할 수 없습니까? 'SELECT 값, FROM Table1 JOIN Numbers on N <= Value' 값을 포함하고 있습니까? – mellamokb

1

2 개 기록

INSERT INTO TABLE2 ((VALUE,VALUE) 
SELECT VALUE,VALUE FROM TABLE1, dummytable)) 
+0

Union all은 중복 레코드를 기록하지만 동적 레코드는 아닙니다. 경우에 따라 레코드를 3 ~ 4 번 복제해야 할 수도 있습니다. 아마 내가 사용할 수있는 모든 것이 while 루프일까요? – tdjfdjdj

+0

@user - 내 대답에 두 번째 제안에 따라 숫자 표를 사용할 수 있습니다. –

0

이 아닌 우아한 방법으로 더미 테이블을 만들 --first 할 수 있지만, 쉽게 일할 수 있습니다. 당신이 기록의 충분히 높은 번호와 테이블이있는 경우에는 십자가가 TOP 절에 가입 할 수있는이 당신이 함께 TOP을 변경해야합니다은 다른 DBMS에서 일할 수 있도록, MQ SQLSERVER 작동

INSERT INTO TABLE2 
SELECT VALUE,VALUE FROM TABLE1 
cross join (select top 2 TABLE_DUMMY) as DUMMY 

DBMS가 필요로하는 키워드

관련 문제