Heim > Datenbank > MySQL-Tutorial > Wie kann ich doppelte Zeilen in MySQL effizient löschen und gleichzeitig einen Datensatz behalten?

Wie kann ich doppelte Zeilen in MySQL effizient löschen und gleichzeitig einen Datensatz behalten?

Barbara Streisand
Freigeben: 2025-01-23 13:37:10
Original
730 Leute haben es durchsucht

How Can I Efficiently Delete Duplicate Rows in MySQL While Keeping One Record?

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

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

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

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!

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