MySQL-Anleitung zum Entfernen doppelter Zeilen: Eindeutige Datensätze effizient aufbewahren
In diesem Artikel wird erläutert, wie Sie doppelte Daten aus einer MySQL-Tabelle entfernen und einen Datensatz aus jedem Satz doppelter Daten beibehalten. Während es möglich ist, eindeutige Werte mithilfe von SELECT DISTINCT
herauszufiltern, konzentriert sich dieser Artikel darauf, wie dies mithilfe des Befehls DELETE
erreicht wird.
Wichtige Tipps:
Stellen Sie sicher, dass Sie Ihre Tabellen sichern, bevor Sie Löschvorgänge durchführen, um einen versehentlichen Datenverlust zu verhindern.
Behalten Sie die Aufzeichnung mit der kleinsten ID:
Um die Zeile mit der kleinsten ID unter den Duplikaten beizubehalten, führen Sie die folgende SQL-Anweisung aus:
<code class="language-sql">DELETE n1 FROM names n1, names n2 WHERE n1.id > n2.id AND n1.name = n2.name;</code>
Behalten Sie den Datensatz mit der größten ID:
Um die Zeile mit der größten ID unter den Duplikaten beizubehalten, führen Sie die folgende SQL-Anweisung aus:
<code class="language-sql">DELETE n1 FROM names n1, names n2 WHERE n1.id < n2.id AND n1.name = n2.name;</code>
Weitere Hinweise:
Effizienzwarnung:
Die obige Methode ist nicht effizient und kann zu einer Überlastung der Datenbankverbindung führen.
Integritätsanforderungen:
MUSS die Klausel AND n1.id < n2.id
(oder AND n1.id > n2.id
) enthalten. Das Ignorieren dieser Bedingung kann dazu führen, dass alle Zeilen in der Tabelle gelöscht werden.
Alternative:
Für eine bessere Leistung sollten Sie die folgenden INSERT
- und DISTINCT
-Abfragen verwenden:
<code class="language-sql">INSERT INTO tempTableName (cellId, attributeId, entityRowId, value) SELECT DISTINCT cellId, attributeId, entityRowId, value FROM tableName;</code>
Sie können dann die ursprüngliche Tabelle löschen und die temporäre Tabelle umbenennen. Diese Methode vermeidet das direkte Löschen von Daten und verbessert so die Effizienz und Sicherheit.
Das obige ist der detaillierte Inhalt vonWie kann ich doppelte Zeilen in MySQL effizient löschen und gleichzeitig einen Datensatz behalten?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!