Multi-Table-Delete mit MySQL (DELETE und JOIN verknüpfen)

Da ich immer wieder nach dem passenden SQL Statement für ein Multi-Table-Delete suchen und mir dieses mühsam zusammenbasteln muss, poste ich das doch einfach mal hier:

Folgende Situation soll mit einem SQL Statement gelöst werden:

Tabelle A und B sind verknüpft. Bestimmte Inhalte aus Tabelle A sollen gelöscht werden, jedoch nur jede Zeilen, wo in Tabelle B bestimmte Kriterien erfüllt sind:


 

Spezialfall:

Aus Tabelle A sollen alle Einträge zu einem Artikel gelöscht werden, wenn es insgesamt mehr als 100 Einträge zu dem Artikel in Tabelle A gibt. Hier soll also mittels Subselect auf die selbe Tabelle zugegriffen werden, aus der auch gelöscht werden soll. Da MySQL diese aber nicht zulässt geht man hier einfach den Weg über eine temporäre Tabelle:


 

Spezialfall 2:

MySQL legt in dem vorigen Beispiel keine Indizes an. Wenn es um große Datenmengen geht, sollte daher vorher selbst eine temporäre Tabelle angelegt und gefüllt werden (in diesem Fall natürlich übertrieben):

Ähnliche Beiträge

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.