Heim >Datenbank >MySQL-Tutorial >Wie lösche ich Zeilen über mehrere Tabellen hinweg in MySQL korrekt?
MySQL-Kreuztabellenlöschung: Fehlerbehebung bei Syntaxfehlern
In MySQL erfordert das gleichzeitige Löschen von Zeilen aus mehreren Tabellen eine spezielle Abfragesyntax. Beim Versuch, die folgende Löschabfrage auszuführen:
<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>
Möglicherweise tritt der folgende Fehler auf:
<code>Uncaught Database_Exception [ 1064 ]: You have an error in your SQL syntax; check the manual...</code>
Dieser Fehler ist auf einen Syntaxfehler beim tabellenübergreifenden Löschen zurückzuführen. Um dieses Problem zu lösen, verwenden Sie JOIN in der DELETE-Anweisung:
<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>
Alternativ können Sie zum Löschen nur aus der pets_activities
-Tabelle Folgendes 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>
Durch die Verwendung der JOIN-Anweisung auf diese Weise können Sie tabellenübergreifende Löschvorgänge in MySQL effizient durchführen. Beachten Sie, dass dieser Ansatz auch für das Löschen einzelner Tabellen mit referenzieller Integrität funktioniert.
Das obige ist der detaillierte Inhalt vonWie lösche ich Zeilen über mehrere Tabellen hinweg in MySQL korrekt?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!