Maison > base de données > tutoriel mysql > Comment supprimer les lignes orphelines en SQL à l'aide de la jointure de gauche, existe ou non dans les sous-questionnaires?

Comment supprimer les lignes orphelines en SQL à l'aide de la jointure de gauche, existe ou non dans les sous-questionnaires?

Linda Hamilton
Libérer: 2025-01-24 22:35:13
original
610 Les gens l'ont consulté

How to Delete Orphan Rows in SQL Using LEFT JOIN, EXISTS, or NOT IN Subqueries?

Utilisez SQL pour supprimer les lignes sans correspondance

Lorsque vous travaillez avec plusieurs tables dans une base de données relationnelle, il est parfois nécessaire d'identifier et de supprimer les lignes d'une table qui n'ont pas de correspondances correspondantes dans une autre table. Ce processus est souvent appelé « suppression des entrées orphelines ».

Considérez le scénario suivant :

  • Vous disposez de deux tables, "files" et "blob", où "files.id" peut être utilisé pour se joindre à "blob.fileid".
  • Votre objectif est de supprimer toutes les lignes de la table "blob" qui n'ont pas de valeur "id" correspondante dans la table "files".

Pour ce faire, vous pouvez utiliser différentes méthodes SQL :

Utilisez LEFT JOIN et IS NULL

<code class="language-sql">DELETE b FROM BLOB b
LEFT JOIN FILES f ON f.id = b.fileid
WHERE f.id IS NULL</code>
Copier après la connexion

Utiliser la sous-requête EXISTS

<code class="language-sql">DELETE FROM BLOB
WHERE NOT EXISTS(SELECT NULL
                    FROM FILES f
                   WHERE f.id = fileid)</code>
Copier après la connexion

Utiliser la sous-requête NOT IN

<code class="language-sql">DELETE FROM BLOB
WHERE fileid NOT IN (SELECT f.id
                        FROM FILES f)</code>
Copier après la connexion

REMARQUE : Si possible, il est recommandé d'effectuer des opérations de suppression au sein d'une transaction afin que vous ayez la possibilité d'annuler les modifications si des problèmes inattendus surviennent.

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!

source:php.cn
Déclaration de ce site Web
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
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal