Wie loswerden von Duplikaten in MySQL

October 30

Wenn Ihr MySQL-Tabelle Hunderte oder Tausende von Datensätzen enthält, wollen Sie nicht manuell durch jeden um doppelte Datensätze zu identifizieren versuchen aussehen. MySQL verfügt nicht über eine einzelne Abfrage, die können Sie doppelte Einträge in einer Tabelle zu entfernen, aber Sie können eine Kombination von Abfragen verwenden und führen sie zusammen, um Ihre Doppel zu beseitigen. Auch wenn die Tabelle einen Primärschlüssel verwendet, um Datensätze eindeutig zu identifizieren, kannst du Duplikate entfernen, nicht das Primärschlüsselfeld in Ihren Abfragen auswählen.

Anweisungen

1 Loggen Sie ein, um Ihre MySQL-Datenbank und zugreifen Sie Abfrage-Tool.

2 Geben Sie die folgende Abfrage:

CREATE TEMPORARY TABLE temp SELECT DISTINCT col1, col2, col3 FROM Tabellenname GROUP BY col1, col2, col3 HAVING COUNT(*) > 1;

Dies erstellt eine temporäre Tabelle, die in der Tabelle vom "Tabellenname" überprüft, und wenn einen doppelten Datensatz gefunden wird, fügt es das Duplikat in der temporären Tabelle nur einmal. Beispielsweise, wenn "Tabellenname" hat drei Einträge, "Jim", "Bob" und "Bob" die Tabelle "Temp" haben nur einen Datensatz, "Bob" Wenn ein Primärschlüssel-Feld in der Tabelle "Spalte1" ist, nicht enthalten Sie "Spalte1" in der Abfrage, und wählen Sie einfach die beiden anderen Spalten.

3 Geben Sie die folgende Abfrage:

DELETE FROM Tabelle wo (col1, col2, col3) IN (SELECT col1, col2, col3 FROM Temp);

Diese Abfrage prüft jeden Datensatz in "Tabellenname" und löscht alle Datensätze, die Duplikate, darunter das Original haben. Beispielsweise, wenn die Tabelle drei Einträge "Jim", "Bob hat" und "Bob" die Abfrage wird beide "Bob" Datensätze löschen, verlassen nur "Jim" in "Table_name." Entfernen Sie Verweise auf "Spalte1" wieder, in der Abfrage, wenn "Spalte1" das Primärschlüsselfeld ist.

4 Geben Sie die folgende Abfrage:

INSERT INTO table_name(col1,col2,col3) SELECT col1, col2, col3 FROM Temp;

Diese Abfrage im Wesentlichen alle Datensätze aus der temporären Tabelle kopiert und fügt sie wieder in "Table_name." Wenn zu diesem Zeitpunkt "Tabellenname" nur hat "Jim" und "Temp" nur hat "Bob", nach der Abfrage "Tabellenname" haben "Jim" und "Bob" Aufzeichnungen während der temporären Tabelle gelöscht. Denken Sie an "Spalte1" Verweise zu entfernen, wenn es ein Primärschlüssel ist.

5 Führen Sie alle Abfragen.