Löschen doppelter Zeilen aus einer Tabelle in MySQL
Wenn Sie mit einer Tabelle arbeiten, die doppelte Datensätze enthält, ist es zur Datenpflege erforderlich, diese zu entfernen Integrität und Effizienz. In MySQL umfasst dies das Identifizieren und Löschen doppelter Zeilen, ein Vorgang, der durch spezifische Abfragen erreicht werden kann.
In Ihrem Fall haben Sie mithilfe dieser Abfrage bereits doppelte Datensätze basierend auf dem Feld empssn ermittelt:
SELECT COUNT(empssn), empssn FROM employee GROUP BY empssn HAVING COUNT(empssn) > 1
Um die doppelten Datensätze zu löschen, haben Sie versucht, die folgende Abfrage auszuführen:
DELETE FROM employee WHERE (empid, empssn) NOT IN ( SELECT MIN(empid), empssn FROM employee GROUP BY empssn );
Es ist jedoch ein Fehler aufgetreten, da MySQL dies nicht tut Erlauben Sie, dass die Zieltabelle in der FROM-Klausel für eine Aktualisierungsabfrage angegeben wird.
Um dieses Problem zu lösen, besteht ein Ansatz darin, die Unterabfrage in eine abgeleitete Tabelle einzuschließen:
DELETE FROM employee WHERE (empid, empssn) NOT IN ( SELECT empid, empssn FROM ( SELECT MIN(empid) AS empid, empssn FROM employee GROUP BY empssn ) X );
Mithilfe von Mit dieser geänderten Abfrage erstellen Sie effektiv eine temporäre, abgeleitete Tabelle (X), die die erforderlichen Daten aus der Mitarbeitertabelle enthält. Die Hauptabfrage DELETE kann dann auf diese abgeleitete Tabelle verweisen, um die doppelten Zeilen basierend auf der eindeutigen Kombination von empid und empssn zu löschen. Dieser Ansatz sollte den aufgetretenen Fehler beheben und es Ihnen ermöglichen, die doppelten Datensätze erfolgreich zu löschen.
Das obige ist der detaillierte Inhalt vonWie lösche ich doppelte Zeilen in einer MySQL-Tabelle, wenn die Zieltabelle in der FROM-Klausel enthalten ist?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!