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:
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>
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>
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:
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>
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!