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

Elimina i record duplicati senza creare una tabella temporanea

Ecco una soluzione sul posto (ma non one-liner)

Scopri l'ID massimo:

select max(id) as maxid 
  from shop;

Ricorda questo valore. Diciamo che è uguale a 1000;

Reinserire i valori univoci, con offset:

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

Elimina i vecchi valori:

delete from shop
  where id <= 1000;

Ripristina ID normali:

update shop
  set id = id - 1000;

GUADAGNO!