[MySQL] DELETE FROM t WHERE x not in select...

xriz

Cadet 4th Year
Registriert
Sep. 2002
Beiträge
111
Hi !

Habe folgendes Problem:
Habe eine Tabelle mit Aufträgen und eine Mit Kunden

Zwischen den Tabellen besteht eine 1:N Relation.
1 Kunde - N Aufträge

Ich will nun alle Aufträge aus der Auftragstabelle löschen, für die es keinen Kunden mehr in der Kundentabelle gibt.

mit oracle würde ich das so machen:
Code:
delete from auftrag where cid not in (select cid from customer);

wie mach ich sowas mit mysql???
thx
 
Das stimmt so nicht ganz korrekt.
USING kannst du nur dann benutzen, wenn deine verknüpfungsspalten identisch heissen.

also z.B.:
Kunde => id, Kundennr, Name, ....
Auftrag => id, kunden_id, auftrag, ....
im beispiel verknüpfe ich mit id und kunden_id

wenn deine tabelle so eine struktur hat musst du anstelle von USING ON table1.id = table2.kunden_id schreiben

sonst müsste es so klappen
 
das hier geht nicht

DELETE FROM request LEFT JOIN customer USING ( cid ) WHERE customer.cid IS NOT NULL

select geht, delete nicht
 
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 'LEFT JOIN customer USING ( cid ) WHERE customer.cid IS NOT


MySQL unterstütz das offensichtlich (noch) nicht.
Subselects gehen ja auch erst seit kurzem.
 

Ähnliche Themen

Antworten
2
Aufrufe
930
Zurück
Oben