Heim  >  Artikel  >  Datenbank  >  Warum tritt beim Entfernen von Duplikaten in MySQL der Fehler „DELETE FROM Employee WHERE (empid, empssn) NOT IN (...)“ auf?

Warum tritt beim Entfernen von Duplikaten in MySQL der Fehler „DELETE FROM Employee WHERE (empid, empssn) NOT IN (...)“ auf?

Linda Hamilton
Linda HamiltonOriginal
2024-11-01 16:24:31680Durchsuche

Why Does

Entfernen doppelter Zeilen in MySQL-Tabellen: Den Fehler beheben

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!

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