2017-05-01 3 views
0

Tabelle1 hat unique_id, ID_actor, ID_media, ID_program.Mysql - INSERT in Tabelle 1 von SELECT in Tabelle 2 mit WHERE NICHT EXIST in Tabelle 1

Jedes Medium kann ein oder mehrere Programme enthalten, jedes Programm kann einen oder mehrere Darsteller enthalten und kann nicht dupliziert werden.

In einer anderen Tabelle (Tabelle 2) es weitere Informationen hat, manchmal in dem Titel Menschen den Namen des Darstellers aufnehmen .. so fand ich diese Abfrage den richtigen Bezug auf die Medien

INSERT INTO Table1 (ID_Actor,ID_Media,ID_Program) 
    (SELECT 123, ID_Media, ID_Program FROM TABLE2 WHERE Title LIKE '%ActorsName%') 

Dieser Code zu machen funktioniert gut, aber wenn bereits der Schauspieler auf das Programm auf den Medien verwiesen wurde, wird es dupliziert .. so, da Einfügen scheint nicht WHERE nicht wissen, wie man zuerst prüfen, ob der Schauspieler bereits auf table1 ist, darauf Medien und auf diesem Programm von der SELECT-Abfrage kommen.

INSERT IF nicht vorhanden

(SELECT ID_Actor,ID_Media,ID_Program from Table1 
WHERE ID_Actor = 123 
    AND ID_Media = (ID_media from SELECT QUERY) 
AND ID_Program = (ID_Program From Select Query)) 
+0

Nachschlagen __INSERT ... ON DUPLICATE KEY UPDATE__. Wenn Sie einen eindeutigen Schlüssel für die Spalten haben, die nicht dupliziert werden können, sollte dies den Trick für Sie tun. –

Antwort

1

Odd Sie das Feature verpasst haben, da Ihre Frage Titel fast die genaue Syntax, die Sie benötigen.

INSERT INTO Table1 (ID_Actor,ID_Media,ID_Program) 
SELECT DISTINCT 123, t2.ID_Media, t2.ID_Program 
FROM TABLE2 AS t2 
WHERE t2.Title LIKE '%ActorsName%' 
    AND NOT EXISTS (
     SELECT 1 
     FROM Table1 AS t1 
     WHERE t1.ID_Actor = 123 
     AND t1.ID_Media = t2.ID_Media 
     AND t1.ID_Program = t2.ID_Program 
); 
+0

Danke, aber aus irgendeinem Grund noch neue Zeilen hinzufügen, auch wenn es besteht. – Musikdoktor

+0

Seltsam, die "AND NOT EXISTS" SELECT auf Tabelle1 Query-Anzeige, die einen Eintrag existiert, aber die INSERT-Abfrage fügt eine neue Zeile wie die UND NOT EXISTS nicht funktioniert – Musikdoktor

+0

Versuchen Sie hinzufügen 'DISTINCT', wie ich gerade in meiner Bearbeitung getan habe; Die ursprüngliche Abfrage, die ich zur Verfügung gestellt habe, würde nicht verhindern, dass anfangs mehrere Zeilen eingefügt werden, in späteren nur mehr. – Uueerdo

Verwandte Themen