<pre><code class="lang-auto">SELECT t1.name
FROM table1 t1
LEFT JOIN table2 t2 ON t2.name = t1.name
WHERE t2.name IS NULL
</code></pre>
<p><strong>Q</strong> : Que se passe-t-il ici ?</p>
<p><strong>R</strong> : Conceptuellement, nous sélectionnons toutes les lignes de <code>table1</code> et pour chaque ligne, nous essayons de trouver une ligne dans <code>table2</code> avec la même valeur pour la colonne <code>name</code>. S’il n’y a pas de telle ligne, nous laissons simplement la portion <code>table2</code> de notre résultat vide pour cette ligne. Ensuite, nous contraignons notre sélection en ne choisissant que les lignes du résultat où la ligne correspondante n’existe pas. Enfin, nous ignorons tous les champs de notre résultat sauf la colonne <code>name</code> (celle dont nous sommes sûrs qu’elle existe, provenant de <code>table1</code>).</p>
<p>Bien que ce ne soit pas forcément la méthode la plus performante dans tous les cas, elle devrait fonctionner dans pratiquement tous les moteurs de base de données qui tentent d’implémenter <a href="https://en.wikipedia.org/wiki/SQL-92">ANSI 92 SQL</a>.</p>