Mysql
 sql >> Database >  >> RDS >> Mysql

Usa un CTE per UPDATE o DELETE in MySQL

Poiché il CTE non è aggiornabile, è necessario fare riferimento alla tabella originale per eliminare le righe. Penso che tu stia cercando qualcosa del genere:

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;