Mailinglisten-Archive |
Michael Herzog wrote: > ich möchte in einer Tabelle mit einem Befehl alle Datensätze löschen, > bei denen 'refer' und 'cat' gleich (doppelt) sind und 'lfnr' = 0 > (Saetze 2-5 müssen also danach verschwunden sein). > > +------+-------+-----+ > | lfnr | refer | cat | > +------+-------+-----+ > | 0 | 200 | 30 | > | 0 | 315 | 30 | <- > | 0 | 315 | 40 | <- > | 0 | 315 | 50 | <- > | 0 | 315 | 60 | <- > | 0 | 315 | 70 | > | 798 | 315 | 60 | > | 797 | 315 | 50 | > | 796 | 315 | 40 | > | 795 | 315 | 30 | > +------+-------+-----+ Wie wär's mit folgendem DELETE FROM Tabelle WHERE Lfnr=0 AND (refer,cat) IN ( SELECT refer,cat FROM Taballe GROUP BY refer,cat HAVING COUNT(*)>1 ) Ob das jetzt im MySQL Sprachumfang enthalten ist, hab ich nicht nachgeschaut, in allgemeinem SQL sollte das aber so (oder do ähnlich) gehen. Die Abfrage löscht alle Datensätze mit lfnr=0, deren refer/cat mehrfach vorkommt. Wenn Du die überiglassen möchtest, zu denen keine Eintragung mit lfnr<>0 gehört, mußt Du die Anfrage noch etwas erweitern: AND (refer,cat) IN ( SELECT refer,cat FROM Taballe WHERE lfnr<>0 ) Elmar --- *** Abmelden von dieser Mailingliste funktioniert per E-Mail *** an mysql-de-request_(at)_lists.4t2.com mit Betreff/Subject: unsubscribe
php::bar PHP Wiki - Listenarchive