Maison >base de données >tutoriel mysql >Comment supprimer correctement des lignes sur plusieurs tables dans MySQL ?

Comment supprimer correctement des lignes sur plusieurs tables dans MySQL ?

Barbara Streisand
Barbara Streisandoriginal
2025-01-19 10:26:10139parcourir

How to Correctly Delete Rows Across Multiple Tables in 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!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn