Mysql
 sql >> Datenbank >  >> RDS >> Mysql

So löschen Sie Duplikate in der MySQL-Tabelle

Viele Wege führen nach Rom. Dies ist einer. Es ist sehr schnell. Sie können es also mit großen Datenbanken verwenden. Vergessen Sie nicht die Indizes. Der Trick ist:Machen Sie phoneNo einzigartig und verwenden Sie "ignore".

drop table if exists bkPhone_template;
create table bkPhone_template (
         phoneNo varchar(20),
         firstName varchar(20),
         lastName varchar(20)
 );

insert into bkPhone_template values('0783313780','Brady','Kelly');
 insert into bkPhone_template values('0845319792','Mark','Smith');
 insert into bkPhone_template values('0834976958','Bill','Jones');
 insert into bkPhone_template values('0845319792','Mark','Smith');
 insert into bkPhone_template values('0828329792','Mickey','Mouse');
 insert into bkPhone_template values('0834976958','Bill','Jones');

drop table if exists bkPhone;
create table bkPhone like bkPhone_template;
alter table bkPhone add unique (phoneNo);

insert  ignore into bkPhone (phoneNo,firstName,lastName) select phoneNo,firstName,lastName from bkPhone_template;

drop table bkPhone_template;

Wenn die Datentabelle bereits vorhanden ist, müssen Sie nur eine Tabellenerstellungsauswahl mit anschließender Einfüge-Ignore-Auswahl ausführen. Am Ende müssen Sie einige Tabellenumbenennungsanweisungen ausführen. Das ist alles.

Diese Problemumgehung ist viel, viel schneller als ein Löschvorgang.