MySQL – Update mittels JOIN

Nicht selten ist es beim Aktualisieren von Datensätzen notwendig, die Bedingung für in Frage kommende Datensätze bei der Update-Anweisung einzufügen. Wer keine Kenntnis darüber besitzt, wird eine zweite Abfrage vorschalten und das Ergebnis in der eigentlichen Update-Anweisung verwerten.

Dabei ist das Updaten von Datensätzen mittels bei MySQL sehr trivial. Folgende Abfrage aktualisiert alle Datensätze von tabelle1 (aktiv wird auf 1 gesetzt) welche in tabelle2 existieren.

  1. UPDATE tabelle1 AS a
  2. JOIN tabelle2 AS b
  3. ON a.id = b.id
  4. SET a.aktiv=1

Folgende Abfrage setzt das Flag “aktiv” in beiden Tabellen bei Datensätzen, die in beiden Tabellen vorkommen.

Quelltext   
  1. UPDATE tabelle1 AS a
  2. JOIN tabelle2 AS b
  3. ON a.id = b.id
  4. SET a.aktiv=1,
  5. b.aktiv=1

Die Verknüpfung der Tabellen ist beliebig erweiterbar. Selbst Subselects oder Derived Tables sind kein Problem.

MySQL – Löschen mittels JOIN

Unter Umständen ist bei dem Löschen von Datensätzen ein JOIN notwendig. Das Löschen von Datensätzen unter Verwendung eines JOINS unter MySQL ist dabei relativ einfach.

Folgende Operation löscht den Datensatz auf lediglich aus Tabelle 1. Gelöscht werden Datensätze von tabelle1 bei welchen die Bedingungen tabelle1.id = tabelle2.id erfüllt.

  1. DELETE del
  2. FROM tabelle1 AS del
  3. JOIN tabelle2 AS sel
  4. ON del.id = sel.id

Folgende Abfrage löscht Einträge aus beiden Tabellen. Gelöscht werden Datensätze von tabelle1 und tabelle2 bei welchen die Bedingungen tabelle1.id = tabelle2.id erfüllt.
  1. DELETE del,
  2. sel
  3. FROM tabelle1 AS del
  4. JOIN tabelle2 AS sel
  5. ON del.id = sel.id

Die Verknüpfung der Tabellen mittels JOIN ist beliebig (auch mit LEFT JOIN) erweiterbar.