Um doppelte Datensätze aus einer Tabelle mit dem Namen „employee“ zu entfernen, die die Felder „empid“, „empname“, und 'empssn', identifizieren Sie sie zunächst mit der Abfrage:
<code class="sql">SELECT COUNT(empssn), empssn FROM employee GROUP BY empssn HAVING COUNT(empssn) > 1</code>
Jedoch die nachfolgende Löschabfrage:
<code class="sql">DELETE FROM employee WHERE (empid, empssn) NOT IN ( SELECT MIN(empid), empssn FROM employee GROUP BY empssn );</code>
stößt auf einen Fehler bei der Angabe der Zieltabelle „employee“ in der FROM-Klausel.
Lösung:
Zur Adresse Um diesen Fehler zu beheben, packen Sie die Unterabfrage in eine abgeleitete Tabelle ein:
<code class="sql">DELETE FROM employee WHERE (empid, empssn) NOT IN ( SELECT empid, empssn FROM ( SELECT MIN(empid) AS empid, empssn FROM employee GROUP BY empssn ) X );</code>
Diese Änderung ermöglicht es Ihnen, auf die zu verweisen Originaltabelle in der Unterabfrage und löschen Sie die doppelten Zeilen erfolgreich.
Das obige ist der detaillierte Inhalt vonWarum tritt beim Entfernen von Duplikaten in MySQL der Fehler „DELETE FROM Employee WHERE (empid, empssn) NOT IN (...)“ auf?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!