Utilisez LEFT JOIN pour sélectionner des enregistrements dans une table qui n'existent pas dans une autre table
Lorsque vous travaillez avec plusieurs tables dans une base de données, déterminer quels enregistrements d'une table n'existent pas dans une autre table est une tâche courante. Cet article explique comment utiliser les requêtes SQL pour accomplir cette tâche.
Supposons qu'il y ait deux tables, table1 et table2, contenant toutes deux des colonnes nommées id et name. Le but est de sélectionner tous les noms de la table2 qui n'apparaissent pas dans la table1.
Méthode traditionnelle
La requête initialement fournie tente de sélectionner des noms ne figurant pas dans la table1 directement à partir de la table2 :
<code class="language-sql">SELECT name FROM table2 -- that are not in table1 already</code>
Cependant, cette requête repose sur des fonctionnalités de base de données spécifiques qui peuvent ne pas être universellement disponibles.
Solution LEFT JOIN
Au lieu de cela, nous pouvons utiliser LEFT JOIN pour le faire efficacement :
<code class="language-sql">SELECT t1.name FROM table1 t1 LEFT JOIN table2 t2 ON t2.name = t1.name WHERE t2.name IS NULL</code>
Explication
Dans cette requête, nous joignons table1 (alias t1) et table2 (alias t2) en comparant leur colonne de nom. LEFT JOIN conserve toutes les lignes de la table1 et renvoie les lignes correspondantes de la table2. Pour les lignes du tableau 1 qui n’ont aucune ligne correspondante dans le tableau 2, les lignes correspondantes du tableau 2 seront NULL.
Enfin, nous utilisons la clause WHERE pour sélectionner uniquement les lignes du résultat qui ont une ligne NULL correspondante dans le tableau2. Cela garantit que nous sélectionnons uniquement les noms dans la table2 qui ne sont pas présents dans la table1.
Avantages de la méthode LEFT JOIN
La méthode LEFT JOIN présente les avantages suivants :
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!