2013-02-12 5 views
7

'Data'테이블에 행을 삽입하려고합니다.SQL INSERT 표 A에서 표 B까지 누락 된 행

Export $의 각 행에 대해 기간 (날짜)과 ID (int)가 일치하는 행에 대해 '데이터'를 확인하는 코드가 필요합니다. 행이 아직 존재하지 않으면 생성해야합니다.

나는 '존재하지 않음'부분이 잘못되었다는 것을 확신합니다. 이것을 수행하는 가장 좋은 방법은 무엇입니까? 모두 도와 주셔서 감사

IF NOT EXISTS (SELECT * FROM Data, Export$ WHERE Data.ID = Export$.ID AND Data.Period = Export$.Period) 
    INSERT INTO Data (Period, Performance, ID) 
    SELECT Period, [Return], [ID] FROM Export$ 
+1

을하지 부분은 확인을보고있는 첫 번째 눈에. 그게 잘못이라고 생각하니? –

+0

잘못된 점은 어떤 행 (다른 행)이 일치하면 행을 삽입하지 못하게됩니다 (가져올 수있는 행이 많을 수 있음). – GilM

+0

오! * 'Export $'에서 "누락 된 레코드"*를 삽입하려고합니까? 그렇다면'MERGE '를 찾아보십시오. 또한 데이터와 내보내기 사이의','는 크로스 조인 (crossing JOIN)입니다. –

답변

9

에 맞게 조정해야합니다

INSERT INTO Data (Period, Performance, ID) 
SELECT Period, [Return], [ID] 
FROM Export$ e 
where not exists (
select * 
from Data 
where ID = e.ID and Period = e.Period) 
+0

완벽하게 일했습니다! 고맙습니다! –

5

시도 뭔가처럼,이 시도하여 테이블

insert into data 
select * from export 
left join data on data.id = export.id 
        and data.period = export.period 
where data.id is null