Doppelte Zeilen aus einer MySQL-Tabelle löschen
Bei der Arbeit mit großen Datensätzen ist es wichtig, doppelte Datensätze zu identifizieren und zu entfernen. Dieser Leitfaden bietet eine umfassende Lösung zum Löschen doppelter Zeilen aus einer MySQL-Tabelle mit dem Namen „employee“, die aus drei Feldern besteht: empid, empname und empssn.
Identifizieren doppelter Datensätze
Um doppelte Datensätze zu identifizieren, können Sie die folgende Abfrage verwenden:
SELECT COUNT(empssn), empssn FROM employee GROUP BY empssn HAVING COUNT(empssn) > 1
Diese Abfrage gibt die Anzahl der Vorkommen für jeden eindeutigen empssn zurück. Die HAVING-Klausel filtert Zeilen mit einer Anzahl größer als 1 heraus und identifiziert so effektiv doppelte empssn-Werte.
Löschen doppelter Datensätze
Um die doppelten Datensätze zu löschen, können wir die verwenden Folgende Abfrage:
DELETE FROM employee WHERE (empid, empssn) NOT IN ( SELECT MIN(empid), empssn FROM employee GROUP BY empssn );
MySQL löst jedoch einen Fehler aus, wenn die Zieltabelle („Mitarbeiter“) sowohl in der DELETE- als auch in der FROM-Klausel der Unterabfrage angegeben ist. Um dies zu umgehen, können wir die Unterabfrage wie folgt in eine abgeleitete Tabelle einbinden:
DELETE FROM employee WHERE (empid, empssn) NOT IN ( SELECT empid, empssn FROM ( SELECT MIN(empid) AS empid, empssn FROM employee GROUP BY empssn ) X );
Diese modifizierte Abfrage löscht effektiv doppelte Datensätze und vermeidet gleichzeitig den Zieltabellenkonflikt. Infolgedessen behält die Datenbank nur die Datensätze mit der minimalen empid für jeden eindeutigen empssn-Wert bei.
Das obige ist der detaillierte Inhalt vonWie lösche ich doppelte Zeilen aus einer MySQL-Tabelle?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!