2016-04-18 7 views
0

Ich möchte die Primärschlüssel aus zwei Tabellen in eine Nachschlagetabelle einfügen. Wie kann ich nur die Daten aus den Tabellen einfügen, wenn es nicht bereits in der Tabelle vorhanden ist? I.e. Wenn die Abfrage 1,1 und 1,1 zurückgibt, fügen Sie sie nicht ein. Meine Abfrage sieht so aus:Unterabfrage, um Daten in Nachschlagetabelle einzufügen, wenn sie nicht bereits existiert

INSERT INTO tblUserLookup(name,class) 
SELECT tblName.id,tblClass.id FROM tblName,tblClass 
WHERE name='bob' AND class='grade4'; 

Vielen Dank!

+0

meisten DBMSes Standard-SQL die Unterstützung 'MERGE INTO', müssen Sie' wenn nicht nur MATCHED' ... – dnoeth

Antwort

0

Sie können NICHT VORHANDEN zu überprüfen, ob Daten bereits in der Tabelle vorhanden ist

INSERT INTO tblUserLookup(name,class) 
select idName, idClass 
from (SELECT tblName.id idName,tblClass.id idClass FROM tblName,tblClass 
     WHERE name='bob' AND class='grade4') tmp 
where not exists (select name from tblUserLookup tmp1 
       where tmp1.name = tmp.idName and tmp1.class = tmp.idClass);