Bei der Datenbankverwaltung ist es häufig erforderlich, doppelte Datensätze aus einer Tabelle zu entfernen. MySQL bietet eine Vielzahl von Möglichkeiten, dies zu erreichen.
Ein gängiger Ansatz besteht darin, doppelte Zeilen mithilfe einer Abfrage wie der folgenden zu identifizieren:
SELECT COUNT(empssn), empssn FROM employee GROUP BY empssn HAVING COUNT(empssn) > 1
Diese Abfrage identifiziert Zeilen mit doppelten Werten in der Spalte empssn. Um diese Duplikate zu löschen, können Sie die folgende Abfrage verwenden:
DELETE FROM employee WHERE (empid, empssn) NOT IN (SELECT MIN(empid), empssn FROM employee GROUP BY empssn);
Dieser Ansatz kann jedoch zu dem Fehler „Sie können die Zieltabelle ‚Mitarbeiter‘ für die Aktualisierung in der FROM-Klausel nicht angeben.“ führen. Um dieses Problem zu beheben, können Sie die Unterabfrage in eine abgeleitete Tabelle einschließ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);
Durch die Verwendung einer abgeleiteten Tabelle können Sie ohne Fehler auf die Originaltabelle in der Unterabfrage verweisen. Dieser Ansatz löscht erfolgreich doppelte Zeilen in der Mitarbeitertabelle und behält gleichzeitig die ursprüngliche Datenstruktur bei.
Das obige ist der detaillierte Inhalt vonWie lösche ich doppelte Zeilen aus einer SQL-Tabelle ohne den Fehler „Sie können die Zieltabelle nicht angeben ...“?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!