Compétences en suppression d'enregistrements multi-tables MySQL
Supprimer simultanément des enregistrements de plusieurs tables MySQL est une tâche complexe. L'utilisation directe d'une instruction DELETE avec une clause WHERE contenant plusieurs références de table échouera généralement. Par exemple, le code suivant :
<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>
Produit généralement des erreurs comme celle-ci :
Uncaught Database_Exception [1064] : Vous avez une erreur dans votre syntaxe SQL ; consultez le manuel qui correspond à la version de votre serveur MySQL pour connaître la bonne syntaxe à utiliser près de 'p, pets_activities pa...'
La bonne approche consiste à utiliser le mot-clé JOIN. Le code modifié est le suivant :
<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>
Si vous devez uniquement supprimer des enregistrements dans la table pets_activities
, vous pouvez utiliser le code suivant :
<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>
Ces méthodes peuvent supprimer efficacement les enregistrements de plusieurs tables dans MySQL. Bien entendu, il existe d'autres méthodes de suppression de table unique impliquant l'intégrité référentielle, telles que EXISTS, NOT EXISTS, IN et NOT IN. Cependant, la syntaxe MySQL ci-dessus fournit une solution générale pour la suppression de plusieurs tables, en particulier lorsqu'il s'agit de scénarios de suppression complexes.
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!