delete from where foo where not exists

Hallo,
ich versuche hier gerade Daten, mit Referenzen ins Nirwana zu löschen, =

nach dem ich mir die Daten mit

select *
from company_request_votings v
where not exists (
select * from company_requests where id =3D v.request);

angeguckt hatte, wollte ich sie analog löschen mit

delete
from company_request_votings v
where not exists (
select * from company_requests where id =3D v.request);

Klapt leider nicht:

ERROR 1064 (42000): You have an error in your SQL syntax; check the
manual that corresponds to your MySQL server version for the right
syntax to use near 'where not exists (select * from company_requests
where id =3D v.request)' at line 1

Wo liegt den hier mein Denkfehler? Und wenn es so nicht geht, wie lösch=
e
ich dann die Daten, für die es keine referenzierten Einträge gibt.

In der Dokumentation habe ich sogar Beispiel mit einer exists clause
gefunden (http://dev.mysql.com/doc/refman/5.1/de/subqueries.html).

mfg Torsten
Torsten Robitzki [ Do, 19 Juli 2007 20:25 ] [ ID #1772988 ]

Re: delete from where foo where not exists

Oh, hab gerade den gefunden:
http://bugs.mysql.com/bug.php?id=3D5123

Wie könnte man das mit einer temporären Tabelle lösen?

mfg Torsten
Torsten Robitzki [ Do, 19 Juli 2007 20:51 ] [ ID #1772989 ]

Re: delete from where foo where not exists

Torsten Robitzki meinte:
> Hallo,
> ich versuche hier gerade Daten, mit Referenzen ins Nirwana zu löschen,
> nach dem ich mir die Daten mit
>
> select *
> from company_request_votings v
> where not exists (
> select * from company_requests where id = v.request);
>
> angeguckt hatte, wollte ich sie analog löschen mit
>
> delete
> from company_request_votings v
> where not exists (
> select * from company_requests where id = v.request);

EXISTS ist mir noch nie abgegangen.

Ungetestet:

delete from foo where id not in (select distinct id from bar);

Mit `bar` als deiner referenzierten Tabelle.

Gregor


--
http://www.gregorkofler.at ::: Landschafts- und Reisefotografie
http://www.licht-blick.at ::: Forum für Multivisionsvorträge
http://www.image2d.com ::: Bildagentur für den alpinen Raum
Gregor Kofler [ Do, 19 Juli 2007 21:47 ] [ ID #1772990 ]

Re: delete from where foo where not exists

Hallo Gregor,

Gregor Kofler wrote:

> Ungetestet:
>
> delete from foo where id not in (select distinct id from bar);
>
> Mit `bar` als deiner referenzierten Tabelle.

funktioniert wunderbar, Danke!

mfg Torsten
Torsten Robitzki [ Do, 19 Juli 2007 23:36 ] [ ID #1772992 ]
Datenbanken » de.comp.datenbanken.mysql » delete from where foo where not exists

Vorheriges Thema: oralce dump nach mysql
Nächstes Thema: Problem beim übertragen von Datenbanken auf anderen Server