phpbar.de logo

Mailinglisten-Archive

[php] Doppelte identische Eintr=?ISO-8859-1?B?5A==?=gen entfernen

[php] Doppelte identische Eintr=?ISO-8859-1?B?5A==?=gen entfernen

Wolfgang Huebner wh_(at)_symbiose.com
Thu, 17 Feb 2000 13:24:39 +0100


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