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