phpbar.de logo

Mailinglisten-Archive

Re: SQL -> DELETE (doppelte)
Archiv Mailingliste mysql-de

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

Re: SQL -> DELETE (doppelte)





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


Home | Main Index | Thread Index

php::bar PHP Wiki   -   Listenarchive