Heim >Datenbank >MySQL-Tutorial >Wie lösche ich doppelte Zeilen aus einer SQL-Tabelle ohne den Fehler „Sie können die Zieltabelle nicht angeben ...'?

Wie lösche ich doppelte Zeilen aus einer SQL-Tabelle ohne den Fehler „Sie können die Zieltabelle nicht angeben ...'?

Linda Hamilton
Linda HamiltonOriginal
2024-11-01 01:12:011015Durchsuche

How to Delete Duplicate Rows from an SQL Table without the

Doppelte Zeilen aus einer SQL-Tabelle löschen

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!

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