2012-07-30 2 views
0

T-SQL에 관한 정말 신참이며 질문은 간단합니다. 나는 동일한 계획을 가진 2 개의 테이블이있다. 나는 다른 하나에 하나를 붙이고 싶다. 내가 아는 유일한 것은 '노동 조합'입니다.다른 테이블을 첨부하여 테이블을 변경하십시오.

select * from table1 
union 
select * from table2 

그러나 이것은 새로운 테이블을 생성하고 저장 공간을 두 배로 만듭니다. 알고 싶습니다. 직접 다른 테이블을 연결하여 테이블을 변경하는 방법이 있습니까? 어떤 것

insert into table1 values() 

정말 도움이 필요합니다! 고마워.

+0

대신보기를 만들 수 있습니다. – Maddy

답변

2

노동 조합은 런타임에 쿼리를 결합하기 때문에 "저장소 생성"하지 않습니다. 유니언이 필요로하는 유일한 저장소는 정렬, 그룹화 및 이와 유사한 작업을 수행하기위한 임시 공간입니다. 표 2의 데이터가 표 당신까지 표 2 에 저장되기 때문에

insert into table1 (col1, col2, col3) 
select col1, col2, col3 
from table2 

그러나 것이다 두 배의 저장 :

는 다음 사용할 수있는 또 다른 테이블에 선택의 데이터를 삽입하려면 삭제/삭제 table2 (출처)

+0

좋습니다! 내 테이블 중 하나가 임시로 삭제됩니다. 따라서 저장소가 정상입니다. 스토리지를 언급 ​​한 문제에서 실제로 '공용체'를 사용하면 '공용'쿼리의 결과를 저장하기 위해 다른 테이블을 생성해야하는데 이것이 문제가 될 것이라고 생각합니다. – user46387

0

중복 된 레코드가 업데이트되거나 그대로 유지 될 필요가 없다고 생각하면 간단하게 insert into을 사용하여이 작업을 수행 할 수 있습니다.

주 : 두 테이블의 구조와 데이터 유형 길이는 동일해야합니다.

이 샘플 코드를 단계별로 살펴보십시오. 이 예에서는 emp_backup 테이블의 데이터를 emp 테이블에 삽입합니다.

CREATE table emp 
(
empid int, 
fname varchar(20), 
lname varchar(20) 
); 

INSERT INTO emp VALUES(1,'vish','dalvi'); 
INSERT INTO emp VALUES(2,'rohit','kale'); 
INSERT INTO emp VALUES(3,'vishal','gr'); 

SELECT * FROM emp; 

CREATE table emp_backup 
(
empid int, 
fname varchar(20), 
lname varchar(20) 
); 

INSERT INTO emp_backup VALUES(6,'mark','novak'); 
INSERT INTO emp_backup VALUES(7,'gar','pandey'); 


INSERT into emp 
SELECT * FROM emp_backup; 

SELECT * FROM emp; 
0

무엇을하려고합니까? 첫 번째 주석에서 지적했듯이 이러한 테이블을 사용하여 VIEW를 만든 다음 해당 뷰를 사용하여 SELECT를 실행하여 두 테이블에서 병합 된 결과를 얻을 수 있습니다. 그러나 phisically 원래 테이블은 서로 독립적으로 유지됩니다. 뷰가 CREATE VIEW definition and syntax를 참조 만들려면하지만, 기본적으로 다음과 같은 명령을 실행 할 수 있습니다,

또 다른 옵션은, 어쩌면 당신을 위해 무엇을 찾고있는 두 테이블에서 모든 행을 얻기 위해 다음

CREATE VIEW table1_table2 
AS 
SELECT * 
    FROM Table1 
UNION ALL 
SELECT * 
    FROM Table2 

그냥 SELECT * FROM table1_table2을하는 것입니다 한 테이블에서 데이터를 가져 와서 다른 테이블에 삽입 한 다음 첫 번째 테이블을 삭제하십시오.

INSERT INTO Table1 
SELECT * FROM Table2 

TRUNCATE Table2 
DROP Table2 

SELECT * FROM Table1 
관련 문제