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

Verwenden Sie einen CTE zum UPDATE oder DELETE in MySQL

Da der CTE nicht aktualisierbar ist, müssen Sie sich auf die ursprüngliche Tabelle beziehen, um Zeilen zu löschen. Ich glaube, Sie suchen nach etwas in der Art:

WITH ToDelete AS 
(
   SELECT ID,
          ROW_NUMBER() OVER (PARTITION BY lastName, firstName ORDER BY ID) AS rn
   FROM mytable
)   
DELETE FROM mytable USING mytable JOIN ToDelete ON mytable.ID = ToDelete.ID
WHERE ToDelete.rn > 1;