Mysql
 sql >> Datenbank >  >> RDS >> Mysql

LÖSCHEN Sie alle doppelten Themen mit wenigen Bedingungen

In MySQL , können Sie die Zieltabelle nicht in einer DML angeben Operation in einer Unterabfrage (es sei denn, Sie verschachteln sie mehr als eine Ebene tief, aber in diesem Fall erhalten Sie keine zuverlässigen Ergebnisse und können keine korrelierten Unterabfragen verwenden).

Verwenden Sie ein JOIN :

DELETE  td
FROM    topics td
JOIN    topics ti
ON      ti.object_id = td.object_id
        AND ti.title = td.title
        AND ti.topic_id > td.topic_id;

Erstellen Sie einen Index zu topics (object_id, title, topic_id) damit dies schnell funktioniert.