2013-02-12 18 views
7

Zaten varolmayan satırları tabloya 'Veri' yerleştirmeye çalışıyorum.SQL INSERT Tablo A'dan Tablo B'ye eksik satırlar

$ Verilerindeki her satır için, hem Tarih (tarih) hem de Kimlik (int) ile eşleşen satırlar için 'Veri'yi denetlemek üzere kodlara ihtiyacım var - satırlar zaten mevcut değilse, bunlar oluşturulmalıdır.

Eminim 'DEĞİLDİR' bölümü yanlıştır - bunu yapmanın en iyi yolu nedir? Yardımın için teşekkürler için

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

parçası değil Tamam bak var senin İlk bakışta. Bunun nesi yanlış olduğunu düşünüyorsun? –

+0

Sorun, bu (muhtemelen diğer) satırların eşleşmesi durumunda herhangi bir satırın eklenmesini engelleyeceğidir (içe aktarılacak kadar iyi olabilir). – GilM

+0

Oh! * Kayıp $ 'den * "kayıp kayıtları" * eklemeye mi çalışıyorsunuz? Eğer öyleyse, 'MERGE' 'ye bakın. Ayrıca, Veri ile İhracat arasında “,” bir CROSS JOIN - bu tür sözdizimine karşı tavsiye ederim. –

cevap

9

uyacak şekilde verdiği ihtiyacınız olacağından:

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

Mükemmel çalışır! Teşekkür ederim! –

5

deneyin gibi bir şey, bu deneyin tabloları

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