Maison >base de données >tutoriel mysql >Comment supprimer des enregistrements d'une table enfant à l'aide d'un JOIN dans MySQL ?
Utilisez JOIN pour supprimer les enregistrements de sous-table dans MySQL
Dans les bases de données relationnelles telles que MySQL, la suppression d'enregistrements peut impliquer plusieurs tables et relations complexes. Un scénario est celui où vous devez supprimer des enregistrements d’une table enfant en fonction d’une condition impliquant la table parent.
Scène :
Considérez la structure de base de données suivante :
Cible :
Supposons que vous souhaitiez supprimer toutes les publications associées à un client donné en supprimant le client lui-même. Cependant, la table posts ne fait pas directement référence à client_id. Il fait uniquement référence à project_id.
Tentative initiale (invalide) :
<code class="language-sql">DELETE FROM posts INNER JOIN projects ON projects.project_id = posts.project_id WHERE projects.client_id = :client_id;</code>
Solution :
Afin de corriger le problème et de supprimer avec succès la publication, vous devez spécifier le nom de la table (les publications) dans l'instruction DELETE :
<code class="language-sql">DELETE posts FROM posts INNER JOIN projects ON projects.project_id = posts.project_id WHERE projects.client_id = :client_id;</code>
Cette requête modifiée cible explicitement la table des publications pour la suppression en fonction des conditions de jointure.
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!