Duplikate in mysql

butz

Mitglied
Mitglied seit
4 Mrz 2005
Beiträge
311
Punkte für Reaktionen
0
Punkte
0
Hallo Leute,

ich habe in einer Tabelle in mysql mehrere Felder unter anderem auch das Feld " Id". Dieses Feld soll nun eigentlich der Primary Schlüssel werden, aber durch einen Fehler sind dort jede Menge Duplikate vorhanden. Wie kann ich diese auslesen und löschen?

Wäre wirklich froh wenn mir jemand helfen könnte eine SQL Anweisung dafür zu erstellen.

butz
 
Wieviele Datensätze hast Du denn in der Tabelle ?
 
1.) Den gesamten Tabelleninhalt (ohne Struktur!) in einen MySQL-Dump exportieren
2.) die Struktur der Tabelle in eine neue Tabelle kopieren
3.) in der neuen Tabelle die Struktur entsprechend anpassen (unique-key setzen)
4.) Danach den Dump wieder importieren - dabei werden doppelte Einträge weggelassen

Die Sache mit der neuen Tabelle ist eine reine Vorsichtsmaßnahme - Du sollte auf jeden Fall hinterher zumindest stichprobenweise die Tabelle kontrollieren.
 
Das geht mit phpmyadmin recht fix ... viel Erfolg !
 
Hallo beta,

meinst du das ich das Feld ID als Unique setzen muss? Habe ich gerade getestet und er kopiert dann nur bis zum ersten Duplikat und endet mit der Fehlermeldung das ein Duplikat festgestellt wurde.

butz
 
Die Fehlermeldung kann man irgendwie unterdrücken - aber um diese Uhrzeit kann ich Dir aus dem Kopf nicht mehr genau sagen wo - man muß da irgendwo einen @ in den Befehl schreiben.
 
Hallo beta,

ist wirklich schon spät, und viel Lust habe ich auch nicht mehr.
Werde mal bei Google suchen ob ich etwas finde, wenn es dir wieder einfällt wäre es schön wenn du es hier noch schreiben würdest.

butz
 
@butz
da ich annehme, daß Du bei 100.000 Einträgen noch dabei bist,
hier eine andere Lösung.

Wir haben meinetwegen eine mysql-table mit:

Code:
create table person (id int(4) not null, 
          vorname varchar(60) not null,
          nachname varchar(60) not null,
          telefon varchar(66),
          strasse varchar(66),
          hausnr  varchar(12),
          plz int(5),
          ort varchar(28)
);

Das heraussuchen der Duplikate geschieht nun mit:
(meinetwegen auch phpmyadmin)

select p.id,p.vorname,p.nachname from person p, person g where
p.id = g.id group by p.id,p.vorname,p.nachname having count(p.id) > 1;

Wenn Du alle Duplikate entfernt/geändert hast, kann man Id als Primär-Schlüssel
definieren (Action bei phpmyadmin), soweit ich mich erinnern kann, sind dann Duplikate ausgeschlossen.


Gruß
britzelfix
 
Hallo,

gelobt sei dieses Forum und allen Helfern, denau das war es was ich suchte.

Perfekt und Vielen Dank

kann man da auch noch gleich ein "Delete" einfügen? dann sind sie auch gleich gelöscht.

butz
 
Gehts nicht einfacher? Lösch die ID-Spalte und leg sie neu an mit auto-increment. Dann zählt er selbst hoch. Bei der Gelegenheit kann man beim Anlegen gleich den Primärschlüssel setzen. Mal eben 100000 Sätze exportieren und wieder importieren halte ich für zu viel Arbeit.
 
Es ging doch darum, doppelte Datensätze rauszufiltern.
 
Hallo Leute,

genau darum ging es, die doppelten zu finden und zu löschen.
Und es ist auch alles perfekt gelaufen, die Duplikate sind gefunden und gelöscht. Interessant war das mein Rechner verdammt am würgen war als er die 100.000 Daten nach Dublikaten untersucht hat.

Danke noch mal an alle Helfer!
butz
 
Holen Sie sich 3CX - völlig kostenlos!
Verbinden Sie Ihr Team und Ihre Kunden Telefonie Livechat Videokonferenzen

Gehostet oder selbst-verwaltet. Für bis zu 10 Nutzer dauerhaft kostenlos. Keine Kreditkartendetails erforderlich. Ohne Risiko testen.

3CX
Für diese E-Mail-Adresse besteht bereits ein 3CX-Konto. Sie werden zum Kundenportal weitergeleitet, wo Sie sich anmelden oder Ihr Passwort zurücksetzen können, falls Sie dieses vergessen haben.