Heim > Datenbank > MySQL-Tutorial > Wie kann ich doppelte Zeilen in MySQL löschen, ohne eine Fehlermeldung zu erhalten?

Wie kann ich doppelte Zeilen in MySQL löschen, ohne eine Fehlermeldung zu erhalten?

Linda Hamilton
Freigeben: 2024-11-04 03:02:29
Original
910 Leute haben es durchsucht

How Can I Delete Duplicate Rows in MySQL Without Receiving an Error?

Doppelte Zeilen in MySQL löschen: Ein einzigartiger Tabellentrick

Der Umgang mit doppelten Datensätzen in einer Datenbank kann ein häufiges Problem sein. In MySQL kann das Löschen dieser Duplikate durch eine Reihe von Schritten erreicht werden. Lassen Sie uns ein bestimmtes Szenario durchgehen und die potenziellen Fallstricke auf dem Weg angehen.

Angenommen, wir haben eine Tabelle mit dem Namen „employee“ mit den Feldern „empid“, „empname“ und „empssn“. Um doppelte Datensätze zu identifizieren, führen wir eine Abfrage aus, um das Vorkommen jedes „empssn“ zu zählen:

<code class="sql">SELECT COUNT(empssn), empssn FROM employee GROUP BY empssn HAVING COUNT(empssn) > 1</code>
Nach dem Login kopieren

Diese Abfrage gibt Zeilen zurück, die angeben, welche „empssn“ mehr als einmal vorkommen.

Als nächstes Wir versuchen, die doppelten Datensätze mit der folgenden Abfrage zu löschen:

<code class="sql">DELETE FROM employee WHERE (empid, empssn) NOT IN (SELECT MIN(empid), empssn FROM employee GROUP BY empssn);</code>
Nach dem Login kopieren

Leider kann diese Abfrage auf den Fehler stoßen: „Sie können die Zieltabelle ‚Mitarbeiter‘ für die Aktualisierung in der FROM-Klausel nicht angeben.“

Um diesen Fehler zu umgehen, können wir eine Technik anwenden, bei der die innere Abfrage in eine abgeleitete Tabelle eingeschlossen wird:

<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>
Nach dem Login kopieren

Diese abgeleitete Tabelle fungiert effektiv als temporäre Tabelle, die es uns ermöglicht, auf das Ziel zu verweisen Tabelle „Mitarbeiter“ sowohl in der DELETE-Anweisung als auch in der FROM-Klausel.

Durch die Implementierung dieses Tricks können wir doppelte Datensätze erfolgreich aus der Tabelle „Mitarbeiter“ löschen. Diese Lösung beseitigt nicht nur die technische Hürde, sondern bietet auch ein tieferes Verständnis der Datenbankmanipulation in MySQL.

Das obige ist der detaillierte Inhalt vonWie kann ich doppelte Zeilen in MySQL löschen, ohne eine Fehlermeldung zu erhalten?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Quelle:php.cn
Erklärung dieser Website
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
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage