2013-03-11 6 views
0

두 개의 테이블에 두 개의 공통 열 'StationID'가 있습니다.손실 된 데이터를 테이블에 삽입하십시오.

Create table t1(ID int, StationID bigint) 
insert into t1 values 
(0,1111), 
(1,2222), 
(2,34), 
(3,456209), 
(56,78979879), 
(512,546) 
go 
Create table t2(StationID bigint, Descr varchar(50)) 
insert into t2 values 
(-1,'test-1'), 
(0,'test0'), 
(1,'test1'), 
(2,'test2'), 
(5001,'dummy'), 
(5002,'dummy'), 
(6001,'dummy') 
go 

모든 t1.StationID가 t2.StationID에있는 것은 아닙니다. 스크립트를 실행하면 증명할 수 있습니다.

select distinct StationID from t1 as A 
where not exists 
(select * from t2 as B where B.StationID =A.StationID) 

결과는 다음과 같습니다

StationID 
34 
546 
1111 
2222 
456209 
78979879 

가 지금은 열 DESCR 어떤 더미 데이터가 될 수 위의 손실 StationID과 T2를 채우려. 내 실제 사례에는 수천 개의 레코드가 있으며, 스크립트를 사용하여 구현하는 방법은 무엇입니까?

+2

사실 위에 게시 한 항목 중 두 번째 표에 스테이션 ID가 없습니다. – Paul

답변

4
insert into t2 (StationID, Descr) 
select distinct StationID, 'dummy' 
from t1 as A 
where not exists 
    (select * from t2 as B where B.StationID =A.StationID) 
+0

본질적으로 동일한 대답은 세 가지지만,이 중 하나만 삽입하면 열을 삽입하는 것이 좋습니다. 좋은 습관입니다. –

+0

좋은 점 - 실제로 그것을 놓친! – Paul

2
INSERT INTO 
    t2 
SELECT DISTINCT 
    stationid, 'dummy' 
FROM 
    t1 
WHERE 
    stationid NOT IN (SELECT stationid FROM t2) 

(다른 대안으로서).

관련 문제