Mysql
 sql >> Base de données >  >> RDS >> Mysql

Utiliser un CTE pour METTRE À JOUR ou SUPPRIMER dans MySQL

Étant donné que le CTE ne peut pas être mis à jour, vous devez vous référer à la table d'origine pour supprimer des lignes. Je pense que vous cherchez quelque chose comme ça :

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;