So löschen Sie Duplikate in der MySQL-Tabelle

7

Ich habe einem Client die folgende Abfrage gegeben, um doppelte Telefonnummer zu löschen. Datensätze in einer MSSQL-Datenbank, aber jetzt müssen sie es auch auf MySQL tun, und sie berichten, dass sich MySQL über das Format der Abfrage beschwert. Ich habe die Einrichtung einer Testtabelle mit Duplikaten für mein Codebeispiel eingeschlossen, aber die tatsächliche Löschabfrage zählt.

Ich frage dies in Unwissenheit und Dringlichkeit, da ich immer noch mit dem Herunterladen und Installieren von MySQL beschäftigt bin und vielleicht nur jemand in der Zwischenzeit helfen kann.

%Vor%     
ProfK 23.03.2009, 09:37
quelle

4 Antworten

14

Viele Wege führen nach Rom. Dies ist einer. Es ist sehr schnell. So können Sie es mit großen Datenbanken verwenden. Vergessen Sie nicht die Indices. Der Trick ist: make phoneNo eindeutig und verwenden Sie "ignorieren".

%Vor%

Wenn die Datentabelle bereits existiert, müssen Sie nur eine create table select mit einem folgenden insert ignore select ausführen. Am Ende müssen Sie einige Anweisungen zum Umbenennen von Tabellen ausführen. Das ist alles.

Diese Problemumgehung ist viel, viel schneller als eine Löschoperation.

    
Tom Schaefer 29.03.2009, 01:50
quelle
5

Sie können die eindeutigen auswählen mit:

%Vor%

und lege sie in eine andere Tabelle, lösche die alte Tabelle und benenne die neue in den alten Namen um.

    
karim79 23.03.2009 09:42
quelle
2

MySQL beschwert sich, weil es keinen Sinn macht. Sie versuchen, mithilfe der Spalte min() , nach der Sie gruppieren, zu aggregieren.

Wenn Sie nun versuchen, doppelte Telefonnummern für dieselbe Person zu löschen, sollte SQL folgendermaßen lauten:

%Vor%     
vartec 23.03.2009 10:28
quelle
1

Mysql enthielt auch:

Ссылка

    
Michael Buen 23.03.2009 09:42
quelle

Tags und Links