Kenntnisse zum Löschen von MySQL-Multitabellendatensätzen
Das gleichzeitige Löschen von Datensätzen aus mehreren MySQL-Tabellen ist eine komplexe Aufgabe. Die direkte Verwendung einer DELETE-Anweisung mit einer WHERE-Klausel, die mehrere Tabellenverweise enthält, schlägt normalerweise fehl. Zum Beispiel der folgende Code:
<code class="language-sql">DELETE FROM `pets` p, `pets_activities` pa WHERE p.`order` > :order AND p.`pet_id` = :pet_id AND pa.`id` = p.`pet_id`</code>
Erzeugt normalerweise Fehler wie diesen:
Nicht abgefangene Datenbankausnahme [1064]: Sie haben einen Fehler in Ihrer SQL-Syntax; überprüfen Sie das Handbuch, das Ihrer MySQL-Serverversion entspricht, um die richtige Syntax für die Verwendung in der Nähe von „p, pets_activities pa...“ zu finden.
Der richtige Ansatz ist die Verwendung des Schlüsselworts JOIN. Der geänderte Code lautet wie folgt:
<code class="language-sql">DELETE p, pa FROM pets p JOIN pets_activities pa ON pa.id = p.pet_id WHERE p.order > :order AND p.pet_id = :pet_id</code>
Wenn Sie nur Datensätze in der Tabelle pets_activities
löschen müssen, können Sie den folgenden Code verwenden:
<code class="language-sql">DELETE pa FROM pets_activities pa JOIN pets p ON pa.id = p.pet_id WHERE p.order > :order AND p.pet_id = :pet_id</code>
Diese Methoden können effektiv Datensätze aus mehreren Tabellen in MySQL löschen. Natürlich gibt es auch andere Methoden zum Löschen einzelner Tabellen, die referenzielle Integrität erfordern, z. B. EXISTS, NOT EXISTS, IN und NOT IN. Die obige MySQL-Syntax bietet jedoch eine allgemeine Lösung für das Löschen mehrerer Tabellen, insbesondere bei komplexen Löschszenarien.
Das obige ist der detaillierte Inhalt vonWie lösche ich Datensätze aus mehreren Tabellen in MySQL ordnungsgemäß?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!