New Zealand: Discussions Datenbanken - Doppelte Datensätze löschen, Discussions, exchange of ideas, controversies, opinions
Dummy User Dummy User![]() Premium member Date of registration: 30.01.2008 Postings: 9 City: Dummydorf | Subject: Doppelte Datensätze löschen Posted on: 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![]() Date of registration: 30.08.2004 Postings: 7 City: Kassel | Subject: Re: Doppelte Datensätze löschen Posted on: 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![]() Date of registration: 05.07.2005 Postings: 320 City: Hösbach | Subject: Re: Doppelte Datensätze löschen Posted on: 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 member Date of registration: 06.07.2009 Postings: 20 City: Berlin | Subject: Re: Doppelte Datensätze löschen Posted on: 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![]() Date of registration: 01.07.2009 Postings: 1 City: Grevenbroich | Subject: Re: Re: Doppelte Datensätze löschen Posted on: 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
Register now
Search in 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 | |
| Emil Nad | 20 |
New freelancers
New projects
New Company Profiles
New scripts
RSS feeds
Read the newest projects in your favorite rss reader.
Deutschland | Österreich | Schweiz | United Kingdom | USA | Russian Federation | España | Italy | Ukraine | Liechtenstein | Hungary | New Zealand | France | Slovakia | India | United Arab Emirates
Theme related Websites :









