Mailinglisten-Archive |
Frank Gudenkauf schrieb am 25.02.2000 0:34 Uhr: > Wie kann ich doppelte, identische Einträge aus der Datenbank entfernen? > Jeder Eintrag soll halt anschließend nur einmal vorkommen. > Tabellenname ist "artikel", Primärschlüssel "artikelnr". Hi, so etwas ähnliches hatte ich auch mal gebraucht und von Martin Ramsch in der MySQL-Liste eine Lösung bekommen. Ich denke zumindest, daß es das ist was Du willst... oder daß Du daraus etwas ableiten kannst. Gruß, Wolfgang ===cut=== Wolfgang Hübner schrieb am Donnerstag, den 29. Juli 1999: > mysql> select * from users where domain="dd.de" and alias=""; > > +----+--------+-------+--------+ > | id | userid | alias | domain | > +----+--------+-------+--------+ > | 46 | er | | dd.de | > | 45 | es | | dd.de | > | 44 | test | | dd.de | > | 43 | sie | | dd.de | > | 42 | test | | dd.de | > | 41 | test | | dd.de | > | 40 | er | | dd.de | > +----+--------+-------+--------+ > > id ist unique. > > Wie lösche ich jede gleiche userid *bis auf jeweils eine*, die keinen alias > hat? In diesem Fall einmal "er" und zweimal "test". Ich denke, am besten in zwei Schritten: a) Erstmal herausbekommen, um welche "userid"s es sich handelt. SELECT userid +--------+------+ ,MIN(id) AS id | userid | mid | FROM users +--------+------+ WHERE alias='' | er | 40 | GROUP BY userid | test | 41 | HAVING count(*)>1; +--------+------+ Die Liste dieser "userids" und "id"s extern speichern. b) Alle Datensätze mit den gespeicherten "userid"s löschen, außer denen mit den gespeicherten "id"s (wir wollen ja je einen Repräsentanten behalten). DELETE FROM users WHERE userid IN ('er','test') AND id NOT IN (40,41); Ciao, Martin -- Martin Ramsch <m.ramsch_(at)_computer.org> <URL: http://home.pages.de/~ramsch/ > PGP KeyID=0xE8EF4F75 FiPr=52 44 5E F3 B0 B1 38 26 E4 EC 80 58 7B 31 3A D7 --- *** Abmelden von dieser Mailingliste funktioniert per E-Mail *** an mysql-de-request_(at)_lists.4t2.com mit Betreff/Subject: unsubscribe ===cut===
php::bar PHP Wiki - Listenarchive