nicht angeben. Ich versuche, eine this Lösung auf meine Daten in der Tabelle in MySQL DB anzuwenden, die Duplikate enthält. Und ich bekomme einen solchen Fehler:Sie können die Zieltabelle 'NAME' für die Aktualisierung in der FROM-Klausel
SQL Error [1093] [HY000]: You can't specify target table 'NAME' for update in FROM clause
DELETE NAME FROM NAME
WHERE NAME.id NOT IN
(SELECT MIN(id)
FROM NAME GROUP BY col1, col2)
Auch versucht, Aliasse zu vergeben - aber ohne Erfolg. Welchen Grund dieses Fehlers hier? Es weist im Allgemeinen darauf hin, dass SQL-Skript zyklischen Prozess erzeugen kann, aber hier sehe ich eigentlich keine relevanten - Es ist offensichtlich, dass zwei Auswahlen für DELETE
und für SELECT
gelöst ist - Motor muss einmal SELECT
einmal tun und dann in WHERE
Bedingungen verwenden für DELETE
. Also - warum dieser Fehler passiert und wie kann ich meine Tabelle tatsächlich deduplizieren? =)
Ihre Abfrage sieht nicht wie die aus der Lösung aus, die Sie anwenden möchten.Sie verwenden einen Join, während Sie 'NOT IN' verwenden. – eggyal
@eggyal Mein Link zeigt auf den Kommentar, nicht auf die Antwort –
Ah, fair genug; Das hatte ich nicht bemerkt. Dieser Kommentar ist SQL Server-spezifisch. Sie werden feststellen, dass der in der Antwort angegebene Join in MySQL funktioniert. – eggyal