Heim > Datenbank > MySQL-Tutorial > Wie kopiert man Zeilen effizient von einer Tabelle in eine andere und vermeidet gleichzeitig Duplikate?

Wie kopiert man Zeilen effizient von einer Tabelle in eine andere und vermeidet gleichzeitig Duplikate?

Mary-Kate Olsen
Freigeben: 2024-12-31 05:57:16
Original
607 Leute haben es durchsucht

How to Efficiently Copy Rows from One Table to Another While Preventing Duplicates?

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.)
                 )
Nach dem Login kopieren

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
Nach dem Login kopieren

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  
Nach dem Login kopieren

Zusätzliche Empfehlungen

  • Fügen Sie bestimmte Feldnamen in Ihre Einfügeanweisung ein, anstatt SELECT * zu verwenden.
  • Überlegen Sie Verwendung geeigneter Indizierung für optimale Leistung.

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!

Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage