2011-01-12 9 views
0

Ich bin verwirrt über diese Abfrage, wo es verwendet Anweisung einfügen und dann ignorieren und dann auswählen. Kann mir das jemand erklären? DankeAbfrage einfügen und wählen Sie Erklärung

INSERT IGNORE INTO 
     myTable 
    SELECT 
     $var1 AS `CMMNCTID`, 
     $var2 AS `ENCID`, 
     variableID, 
     ProductID, 
     CustomerID, 
     Age, 
     "" AS `myJ`, 
     "" AS `myI` 
    FROM 
     table2 
    JOIN 
     table3 
    ON 
     table2.ID= table3.ID 

Antwort

0

Die SELECT ist eine Unterabfrage. Was die INSERT macht, ist das Einfügen von allem, was in der Verbindung von table2 und enthalten ist, in myTable. Die IGNORE weist sie an, alle Einträge für Schlüssel, die bereits in myTable existieren, zu ignorieren und nur das einzufügen, was noch nicht existiert.

Es scheint, der Zweck der Abfrage besteht darin, die Daten zu kombinieren, die zwischen table2 und table3 zugeordnet sind, und es in myTable auszugeben.

+0

Insert-Anweisung hat mysql einfügen in Tabelle (Spalte1, Spalte2) Wert (val, val2), aber wir sehen das hier nicht ... warum und wie es weiß, wo – user400749

+0

@ user400749 einfügen: Die 'AS ...' Teile, die Sie in der SELECT-Abfrage sehen, entsprechen den Spalten in 'myTable'. – BoltClock

1

INSERT IGNORE in einem Schlüsselwort mysql: Wenn die Einfügung einen Primärschlüssel oder einen Eindeutigen Schlüsselfehler verursacht, sollte diese Zeile übersprungen werden.

INSERT ... SELECT: wird verwendet, um Daten aus einer anderen Tabelle zu kopieren.

http://dev.mysql.com/doc/refman/5.1/en/insert.html

0

Es dauert ergibt sich aus der SELECT Abfrage auf Tabellen table2 und table3 und fügt die Ergebnisse in Tabelle myTable. IGNORE Schlüsselwort teilt mysql einfach mit, Fehler zu ignorieren, die beim Ausführen der INSERT-Abfrage auftreten.