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
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
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
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