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 | |
2 | yahoo |
3 | msn |
4 | |
5 | |
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>
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>
Zusätzliche Hinweise:
AND n1.id != n2.id
zu beiden Abfragen hinzufügen, um zu verhindern, dass versehentlich alle Zeilen gelöscht werden. <code class="language-sql">INSERT INTO tempTableName(cellId,attributeId,entityRowId,value) SELECT DISTINCT cellId,attributeId,entityRowId,value FROM tableName;</code>
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!