DELETE über einen SQL JOIN

Montag, Januar 16, 2012

Möchte man einen DELETE über mehrere Tabellen hinweg machen (mit Hilfe von Joins), kann es durchaus vorkommen, dass man beim Ausführen seines DELETE-Statements einen Fehler bekommt.

Nach längerer Suche bin ich auf folgenden Hinweis gestoßen.

Ich wollte folgendes SQL ausführen:

DELETE FROM
  table1
JOIN
  table2 ON [**onClause**]
JOIN
  table3 ON [**onClause**]
WHERE
  [**whereClause**]

Dieses Statement lieferte mir allerdings einen Syntaxerror zurück. Durch Einfügen von USING funktionierte meine Query dann so, wie sie sollte.

DELETE FROM
  table1
USING
  table1
JOIN
  table2 ON [**onClause**]
JOIN
  table3 ON [**onClause**]
WHERE
  [**whereClause**]

Alternativ funktioniert auch Folgendes:

DELETE table1 FROM
  table1
JOIN
  table2 ON [**onClause**]
JOIN
  table3 ON [**onClause**]
WHERE
  [**whereClause**]

Liegt wahrscheinlich daran, das die Query nicht wirklich weiß, aus welcher Tabelle sie die ermittelten Datensätze löschen soll.

Ich hoffe dem Einen oder Anderen so eine unnötige Sucherei erspart zu haben :)

Hinterlasse eine Antwort