phpbar.de logo

Mailinglisten-Archive

Re: delete einsetzen
Archiv Mailingliste mysql-de

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: delete einsetzen



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


Home | Main Index | Thread Index

php::bar PHP Wiki   -   Listenarchive