Mysql
 sql >> Base de Dados >  >> RDS >> Mysql

Use um CTE para UPDATE ou DELETE no MySQL


Como o CTE não é atualizável, você precisa consultar a tabela original para excluir as linhas. Acho que você está procurando algo assim:
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;