Supprimer les entrées orphelines dans une table SQL. Une situation courante consiste à identifier les lignes d'une table pour lesquelles il manque des lignes correspondantes dans une autre table. Considérez ce qui suit :
Vous disposez de deux tables :
Les colonnes fileid et id peuvent être utilisées pour joindre des tables. Votre objectif est de supprimer toutes les lignes de la table blob où l'ID de fichier n'est pas trouvé dans la table files.id.
Il existe trois méthodes principales pour cette tâche :
Utilisez LEFT JOIN/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>
Utiliser NE PAS EXISTE :
<code class="language-sql">DELETE FROM BLOB WHERE NOT EXISTS(SELECT NULL FROM FILES f WHERE f.id = fileid)</code>
Utilisez PAS DANS :
<code class="language-sql">DELETE FROM BLOB WHERE fileid NOT IN (SELECT f.id FROM FILES f)</code>
Attention :
Lorsque vous effectuez des opérations DELETE, assurez-vous toujours qu'elles sont effectuées dans le cadre d'une transaction. Cela vous permet d'annuler les modifications si des erreurs se produisent, minimisant ainsi le risque de perte de données.
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!