In diesem Artikel erfahren Sie hauptsächlich, wie Sie doppelte Daten in MySQL löschen. Dieser Artikel erklärt es anhand von Beispielen und hofft, Ihnen dabei zu helfen.
löschen FROM `ex` WHERE phone in (SELECT c.phone
FROM `ex` as c
GROUP BY c.phone
HAVING COUNT( * ) >1) und ID nicht enthalten (wählen Sie max(b.id) aus „ex“ als b-Gruppe nach b.phone aus);
Hinweis: ex (Beispieltabellenname), basierend auf dem Telefonfeld, bestimmen, ob wiederholen. Behalten Sie wiederholt die zuletzt eingefügte ID bei (d. h. die mit der größten automatisch inkrementierten ID)
Nach der Ausführung ist das Ergebnis jedoch nicht wie erwartet:
/* SQL-Fehler ( 1093): Sie können die Zieltabelle „ex“ für die Aktualisierung nicht in der FROM-Klausel angeben */
Übersetzung: Sie können nicht zuerst bestimmte Werte in derselben Tabelle auswählen und dann aktualisieren (löschen) Diese Tabelle (in derselben Anweisung), das heißt, Sie können nicht auf der Grundlage des Werts eines bestimmten Felds ein Urteil fällen und dann den Wert eines bestimmten Felds aktualisieren.
Die Frage gilt nur für: MySQL, ohne Oracle, SQL Server usw. Weil die Unterstützung von Unteranweisungen durch MySQL nicht sehr gut ist.
Problem gelöst:
Wählen Sie zuerst das Ergebnis aus und wählen Sie es dann erneut über die Zwischentabelle aus. Das Ergebnis der Auswahl wird zu einer zwischengespeicherten Tabelle mit einem Alias, einer virtuellen Tabelle.
Wie im Bild gezeigt: Dies löst das Problem des Löschens doppelter Informationen in einer SQL-Anweisung von MySQL.
Für Ihre Bequemlichkeit:
DELETE FROM `ex` WHERE id NOT IN ( SELECT id FROM (SELECT max(b.id) AS id FROM `ex` b GROUP BY b.phone) b);
Verwandte Empfehlungen:
Mysql löscht doppelte Daten Behalten Sie die kleinste ID bei
SQL-Anweisung für doppelte Daten löschen
MySQL löscht doppelte Datenzeilen und speichert nur eine
Das obige ist der detaillierte Inhalt vonMySQL implementiert das Löschen doppelter Daten. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!