Heim > Datenbank > MySQL-Tutorial > Wie lösche ich effizient doppelte Zeilen in MySQL und behalte dabei einen Datensatz bei?

Wie lösche ich effizient doppelte Zeilen in MySQL und behalte dabei einen Datensatz bei?

Barbara Streisand
Freigeben: 2025-01-23 13:21:10
Original
625 Leute haben es durchsucht

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

Löschen Sie doppelte Zeilen (doppelte Daten) in MySQL

Frage:

Wie entferne ich doppelte Zeilen aus einer MySQL-Tabelle und behalte dabei einen einzelnen Datensatz für jeden eindeutigen Wert bei?

Beispiel:

Berücksichtigen Sie die folgenden Daten in der Namenstabelle:

id name
1 google
2 yahoo
3 msn
4 google
5 google
6 yahoo

Lösung:

Warnung: Treffen Sie immer die Vorsichtsmaßnahme, diesen Vorgang zuerst an einer Testkopie der Tabelle durchzuführen.

Um alle doppelten Zeilen zu entfernen (eine beizubehalten) und den Datensatz mit dem niedrigsten oder höchsten ID-Wert beizubehalten, verwenden Sie die folgende Abfrage:

Behalten Sie den 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

Behalten Sie den 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

Zusätzliche Hinweise:

  • Stellen Sie sicher, dass Sie die Bedingung AND n1.id != n2.id zu beiden Abfragen hinzufügen, um zu verhindern, dass versehentlich alle Zeilen gelöscht werden.
  • Diese Methode ist rechenintensiv und kann Ihre Verbindung unterbrechen, wenn die Tabelle groß ist.
  • Erwägen Sie bei großen Tabellen die Verwendung von INSERT mit DISTINCT als schnellere Alternative:
<code class="language-sql">INSERT INTO tempTableName(cellId,attributeId,entityRowId,value)
    SELECT DISTINCT cellId,attributeId,entityRowId,value
    FROM tableName;</code>
Nach dem Login kopieren

Das obige ist der detaillierte Inhalt vonWie lösche ich effizient doppelte Zeilen in MySQL und behalte dabei einen Datensatz bei?. 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