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

Supprimer les enregistrements en double sans créer de table temporaire

Voici une solution sur place (mais pas en une seule ligne)

Découvrez l'identifiant max :

select max(id) as maxid 
  from shop;

Rappelez-vous cette valeur. Disons qu'il est égal à 1000 ;

Réinsérez les valeurs uniques, avec décalage :

insert into shop (id, tax_id) 
select distinct id + 1000, tax_id 
  from shop;

Supprimer les anciennes valeurs :

delete from shop
  where id <= 1000;

Restaurer les identifiants normaux :

update shop
  set id = id - 1000;

PROFITEZ !