Kopieren von Zeilen mit Duplikatbehandlung in identischen Schematabellen
Sie möchten Zeilen von der Tabelle „srcTable“ nach „destTable“ übertragen und dabei Duplikate verhindern . Allerdings hat die Verwendung einer Unterabfrage in einer WHERE-Klausel bei Ihnen nicht effektiv funktioniert.
Lösung des Problems mit WHERE-Klauseln
Der Fehler liegt im Fehlen einer eigentlichen Abfrage -Klausel in der Unterabfrage, um Duplikate zu identifizieren. Fügen Sie die erforderlichen Bedingungen wie folgt in Ihre Unterabfrage ein:
INSERT INTO destTable SELECT Field1, Field2, Field3, ... FROM srcTable WHERE NOT EXISTS(SELECT * FROM destTable WHERE (srcTable.Field1 = destTable.Field1 AND srcTable.Field2 = destTable.Field2 ... etc.) )
Alternativer Ansatz mit Outer Join
Alternativ können Sie die Verwendung eines Outer Joins für eine präzisere Lösung in Betracht ziehen:
INSERT INTO destTable SELECT s.field1, s.field2, s.field3, ... FROM srcTable s LEFT JOIN destTable d ON (d.Key1 = s.Key1 AND d.Key2 = s.Key2 AND...) WHERE d.Key1 IS NULL
Umgang mit Duplikaten in der Quelle Tabelle
Wenn Ihr Problem speziell doppelte Zeilen in der Quelltabelle betrifft, sollten Sie die Verwendung einer eindeutigen Klausel in Ihrer Einfügeanweisung in Betracht ziehen:
INSERT INTO destTable SELECT Distinct field1, field2, field3, ... FROM srcTable
Zusätzliche Empfehlungen
Das obige ist der detaillierte Inhalt vonWie kopiert man Zeilen effizient von einer Tabelle in eine andere und vermeidet gleichzeitig Duplikate?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!