Heim  >  Artikel  >  Datenbank  >  Wie lösche ich doppelte Zeilen aus einer MySQL-Tabelle?

Wie lösche ich doppelte Zeilen aus einer MySQL-Tabelle?

DDD
DDDOriginal
2024-11-03 04:59:02920Durchsuche

How to Delete Duplicate Rows from a MySQL Table?

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!

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