Maison >base de données >tutoriel mysql >Comment supprimer correctement des lignes sur plusieurs tables dans MySQL ?
Suppression de tables croisées MySQL : dépannage des erreurs de syntaxe
Dans MySQL, la suppression simultanée de lignes de plusieurs tables nécessite une syntaxe de requête spéciale. Lorsque vous essayez d'exécuter la requête de suppression suivante :
<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>
Vous pouvez rencontrer l'erreur suivante :
<code>Uncaught Database_Exception [ 1064 ]: You have an error in your SQL syntax; check the manual...</code>
Cette erreur provient d'une erreur de syntaxe lors de la suppression de tables croisées. Pour résoudre ce problème, utilisez JOIN dans l'instruction DELETE :
<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>
Alternativement, pour supprimer uniquement de la table pets_activities
, vous pouvez utiliser :
<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>
En utilisant l'instruction JOIN de cette manière, vous pouvez effectuer efficacement des opérations de suppression de tables croisées dans MySQL. Gardez à l’esprit que cette approche fonctionne également pour les suppressions de table unique avec intégrité référentielle.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!