2013-02-12 16 views
7

Sto tentando di inserire righe nella tabella "Dati" se non esistono già.SQL INSERISCE righe mancanti dalla tabella A alla tabella B

Per ogni riga in Export $, ho bisogno del codice per controllare "Dati" per le righe che corrispondono sia a Periodo (data) che a ID (int) - se le righe non esistono già, devono essere create.

Sono quasi sicuro che la parte "NON ESISTE" è sbagliata: qual è il modo migliore per farlo? Grazie per il vostro aiuto

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

A prima vista il vostro non esiste parte sembra ok. Cosa ne pensi di sbagliato? –

+0

Ciò che è sbagliato è che questo impedirà l'inserimento di righe se qualsiasi (eventualmente altre) righe coincidono (potrebbero essercene molte che vanno bene per l'importazione). – GilM

+0

Oh! Stai cercando di inserire "record mancanti" * da * "Esporta $"? Se è così, cerca "MERGE". Inoltre, '' 'tra Dati ed Esportazioni c'è un CROSS JOIN - mi raccomando contro tale sintassi. –

risposta

9

provare questo:

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

Ha funzionato perfettamente! Grazie! –

5

provare qualcosa di simile, avrà bisogno di tweaking per soddisfare le vostre tabelle

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