Heim > Datenbank > MySQL-Tutorial > Wie lösche ich doppelte Zeilen in MySQL, während ich eine behalte?

Wie lösche ich doppelte Zeilen in MySQL, während ich eine behalte?

Barbara Streisand
Freigeben: 2025-01-23 13:26:10
Original
465 Leute haben es durchsucht

How to Delete Duplicate Rows in MySQL While Keeping One?

So entfernen Sie doppelte Zeilen aus MySQL (behalten Sie eine Zeile bei)

Deduplizierung ist entscheidend für die Aufrechterhaltung einer sauberen und effizienten Datenbank. Während die Auswahl eindeutiger Werte mithilfe einer Abfrage wie SELECT DISTINCT einfach ist, erfordert das Entfernen von Duplikaten über die Operation DELETE einen etwas anderen Ansatz.

Verwenden Sie DELETE, um Duplikate zu entfernen

Um doppelte Zeilen aus einer Tabelle zu entfernen und gleichzeitig eine Kopie beizubehalten, können Sie zwei DELETE Abfragevarianten verwenden:

  1. Behalten Sie die Zeile mit dem niedrigsten ID-Wert bei:

    <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
  2. Behalten Sie die Zeile mit dem höchsten ID-Wert bei:

    <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

Beachten Sie, dass diese Abfragen Inner Joins (JOIN) verwenden, um Zeilen basierend auf der Spalte name zu vergleichen. Anschließend identifizieren und entfernen sie doppelte Zeilen basierend auf der Bedingung, dass eine Zeile einen höheren oder niedrigeren ID-Wert als eine andere Zeile hat.

Hinweis:

  • Stellen Sie sicher, dass Sie eine Testkopie der Tabelle erstellen, bevor Sie diese Abfragen ausführen, da bei falscher Verwendung möglicherweise alle Zeilen gelöscht werden.
  • Durch die Einbeziehung der Bedingung AND n1.id != n2.id in die Abfrage wird sichergestellt, dass Zeilen nicht gelöscht werden, wenn sie denselben Namen, aber unterschiedliche ID-Werte haben.

Eine Alternative zur Verwendung von INSERT:

Bei größeren Tabellen ist die Verwendung von DISTINCT mit INSERT eine effizientere Möglichkeit, Duplikate zu entfernen.

<code class="language-sql">INSERT INTO tempTableName(cellId, attributeId, entityRowId, value)
SELECT DISTINCT cellId, attributeId, entityRowId, value
FROM tableName;</code>
Nach dem Login kopieren

Diese Methode erstellt eine neue Tabelle, die nur eindeutige Werte enthält, wodurch Duplikate effektiv entfernt werden.

Das obige ist der detaillierte Inhalt vonWie lösche ich doppelte Zeilen in MySQL, während ich eine behalte?. 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