Schweiz: Diskussionen Datenbanken - Doppelte Datensätze löschen, Diskussions-Foren, Gedankenaustausch, Kontroversen, Meinungen
Dummy User Dummy User![]() Premium-Mitglied Anmeldung: 30.01.2008 Beiträge: 9 Wohnort: Dummydorf | Betreff: Doppelte Datensätze löschen Verfasst am: 01.01.1970 01:33 Hallo, ich habe ein kleines MySQL Problem, und hoffe, daß ihr mir ein paar Tipps geben könnt. Es existiert folgende Beispieltabelle: create table daten ( id integer not null default '0' auto_increment, titel varchar(80), primary key(id) ); Diese Tabelle enthält nun z.B. 10000 Datensätze wobei der Titel leider teilweise doppelt ist: select titel, count(id) from daten group by titel having count(titel)>1 limit 10; titel 1 | 5 titel 2 | 7 titel 3 | 4 titel 4 | 3 usw... Ich suche nun nach einer einfachen Möglichkeit, alle doppelten Datensätze zu entfernen. Daß wäre ja nun nicht weiter schwierig. Jetzt möchte ich aber von jedem Doppelten Datensatz den ersten behalten. Es gibt "titel 4" z.B. 3 mal: id | titel 4 | titel 4 5 | titel 4 6 | titel 4 Ich brauche nun einen Delete der mir die Datensätze 5 und 6 löscht und 4 übrig läßt. Hat jemand einen Tipp für mich? Gruß, Nico | |||||||
| ||||||||
Roy Leppin![]() Anmeldung: 30.08.2004 Beiträge: 7 Wohnort: Kassel | Betreff: Re: Doppelte Datensätze löschen Verfasst am: 01.01.1970 01:33 > select titel, count(id) > from daten > group by titel > having count(titel)>1 > limit 10; Selektier doch einfach überall die min(id) in eine Temp-Tabelle und lösche dann die Datensätze zu denen in der Temp-Tabelle ein Eintrag existiert. Das wiederholst Du so oft bis dein Select nix mehr findet. Roy | |||||||
| ||||||||
Thomas Bimesmeier![]() Anmeldung: 05.07.2005 Beiträge: 320 Wohnort: Hösbach | Betreff: Re: Doppelte Datensätze löschen Verfasst am: 11.07.2005 11:43 schrieb am 01.01.1970 um 01:33: > Hallo, > > ich habe ein kleines MySQL Problem, und hoffe, > daß ihr mir ein paar Tipps geben könnt. > > Es existiert folgende Beispieltabelle: > > create table daten ( > id integer not null default '0' auto_increment, > titel varchar(80), > primary key(id) > ); > > Diese Tabelle enthält nun z.B. 10000 Datensätze wobei > der Titel leider teilweise doppelt ist: > > select titel, count(id) > from daten > group by titel > having count(titel)>1 > limit 10; > > titel 1 | 5 > titel 2 | 7 > titel 3 | 4 > titel 4 | 3 > > usw... > > Ich suche nun nach einer einfachen Möglichkeit, alle doppelten > Datensätze zu entfernen. Daß wäre ja nun nicht weiter schwierig. > Jetzt möchte ich aber von jedem Doppelten Datensatz den ersten > behalten. > > Es gibt "titel 4" z.B. 3 mal: > id | titel > 4 | titel 4 > 5 | titel 4 > 6 | titel 4 > > Ich brauche nun einen Delete der mir die Datensätze 5 und 6 löscht > und 4 übrig läßt. > > Hat jemand einen Tipp für mich? > > Gruß, > Nico > > Eine Möglichkeit von mehreren: - Hilfstabelle mit identischem Aufbau erstellen - Originaltabelle für andere sperren - mit (SELECT DISTINCT * FROM daten ORDER BY id) den Gulasch holen und mittels INSERT INTO in die Hilfstabelle blasen. - Originaltabellinhalt löschen - Daten aus der Hilfstabelle in die Originaltabelle kopieren - Originaltabelle entsperren - Hilftabelle löschen Diese Methode geht extrem schnell und ist sicher im laufenden Betrieb. | |||||||
| ||||||||
Matthias Metz![]() Premium-Mitglied Anmeldung: 06.07.2009 Beiträge: 20 Wohnort: Berlin | Betreff: Re: Doppelte Datensätze löschen Verfasst am: 07.07.2009 09:40 ... vielleicht kannst Du mit der Bedingung COUNT < 2 arbeiten. Dummy User Dummy User schrieb am 01.01.1970 um 01:33: > Hallo, > > ich habe ein kleines MySQL Problem, und hoffe, > daß ihr mir ein paar Tipps geben könnt. > > Es existiert folgende Beispieltabelle: > > create table daten ( > id integer not null default '0' auto_increment, > titel varchar(80), > primary key(id) > ); > > Diese Tabelle enthält nun z.B. 10000 Datensätze wobei > der Titel leider teilweise doppelt ist: > > select titel, count(id) > from daten > group by titel > having count(titel)>1 > limit 10; > > titel 1 | 5 > titel 2 | 7 > titel 3 | 4 > titel 4 | 3 > > usw... > > Ich suche nun nach einer einfachen Möglichkeit, alle doppelten > Datensätze zu entfernen. Daß wäre ja nun nicht weiter schwierig. > Jetzt möchte ich aber von jedem Doppelten Datensatz den ersten > behalten. > > Es gibt "titel 4" z.B. 3 mal: > id | titel > 4 | titel 4 > 5 | titel 4 > 6 | titel 4 > > Ich brauche nun einen Delete der mir die Datensätze 5 und 6 löscht > und 4 übrig läßt. > > Hat jemand einen Tipp für mich? > > Gruß, > Nico > > | |||||||
| ||||||||
Mark Radermacher![]() Anmeldung: 01.07.2009 Beiträge: 1 Wohnort: Grevenbroich | Betreff: Re: Re: Doppelte Datensätze löschen Verfasst am: 07.07.2009 12:31 Hallo, ich kenn MySql nicht so gut, aber unter Oracle würde ich folgenden DELETE-Befehl absetzen : DELETE daten a WHERE EXISTS (SELECT * FROM daten WHERE titel = a.titel AND id > a.id); Sollte eigentlich klappen, da dies ein Standard SQL-Statement ist. Gruß, Mark > > create table daten ( > > id integer not null default '0' auto_increment, > > titel varchar(80), > > primary key(id) Matthias Metz schrieb am 07.07.2009 um 09:40: > ... vielleicht kannst Du mit der Bedingung COUNT < 2 arbeiten. > > > > Dummy User Dummy User schrieb am 01.01.1970 um 01:33: > > Hallo, > > > > ich habe ein kleines MySQL Problem, und hoffe, > > daß ihr mir ein paar Tipps geben könnt. > > > > Es existiert folgende Beispieltabelle: > > > > create table daten ( > > id integer not null default '0' auto_increment, > > titel varchar(80), > > primary key(id) > > ); > > > > Diese Tabelle enthält nun z.B. 10000 Datensätze wobei > > der Titel leider teilweise doppelt ist: > > > > select titel, count(id) > > from daten > > group by titel > > having count(titel)>1 > > limit 10; > > > > titel 1 | 5 > > titel 2 | 7 > > titel 3 | 4 > > titel 4 | 3 > > > > usw... > > > > Ich suche nun nach einer einfachen Möglichkeit, alle doppelten > > Datensätze zu entfernen. Daß wäre ja nun nicht weiter schwierig. > > Jetzt möchte ich aber von jedem Doppelten Datensatz den ersten > > behalten. > > > > Es gibt "titel 4" z.B. 3 mal: > > id | titel > > 4 | titel 4 > > 5 | titel 4 > > 6 | titel 4 > > > > Ich brauche nun einen Delete der mir die Datensätze 5 und 6 löscht > > und 4 übrig läßt. > > > > Hat jemand einen Tipp für mich? > > > > Gruß, > > Nico > > > > > | |||||||
| ||||||||
|
|
||||||||
1
» ICT Team Manager (w/m)
» Softwareentwickler Yuriy Taran (DBMS: Oracle, MS SQL, MySQL, PostgresSQL)
» Doppelte Datensätze löschen
» Lotus Notes/Domino EntwicklerCamp 07
» Indizes
» AdoDB
» Softwareentwickler Yuriy Taran (DBMS: Oracle, MS SQL, MySQL, PostgresSQL)
» Doppelte Datensätze löschen
» Lotus Notes/Domino EntwicklerCamp 07
» Indizes
» AdoDB
Jetzt registrieren
Suche im Forum
TOP Poster
| Manfred Schmitz | 144 | |
| Peter Böckmann | 68 | |
| Marceau Casin | 54 | |
| Jens Schneeweiß | 51 | |
| Brigitte Pfennig | 43 | |
| Adriana Victoria Slivneanu | 35 | |
| Simon Fundner | 32 | |
| Theodor Rack | 26 | |
| Khalid Mahmood | 25 | |
| Carlos Medina | 20 |
Kundenecho
Sebastian RiechertOptimale Einstiegs-Hilfe
Über Freelancermap.de habe ich meine ersten Aufträge bekommen. Dieses Portal ist eine hervorragende Hilfe beim akquirieren und empfangen von Projekt-Aufträgen.
Neue Profile
Neue Projekte
Neue Firmenprofile
Aktuelles
Neue Scripts
RSS Projekt-Feeds
Erhalten Sie die neuesten Projekte als RSS News-Feed, um sie bequem in Ihrem Feed-Reader zu lesen.
Umfrage
Deutschland | Österreich | Schweiz | United Kingdom | USA | Russian Federation | España | Italy | Ukraine | Liechtenstein | Hungary | New Zealand | France | Slovakia | India | United Arab Emirates
Themenrelevante Websites :














