611 votes

Comment faire pour sélectionner tous les enregistrements d’une table qui n’existent pas dans une autre table ?

<blockquote> <p>table1 (id, nom)<br>table2 (id, nom)</p> <p>Requête :</p><pre><code></code></pre></blockquote>

1062voto

Kris Points 11892
SELECT t1.name
FROM table1 t1
LEFT JOIN table2 t2 ON t2.name = t1.name
WHERE t2.name IS NULL

291voto

froadie Points 15184
<pre><code></code><p>ou</p><pre><code></code></pre><p><a href="http://stackoverflow.com/questions/2246772/whats-the-difference-between-not-exists-vs-not-in-vs-left-join-where-is-null">cette question</a> pour 3 techniques pour y parvenir</p></pre>

127voto

Tan Rezaei Points 116

Je n’ai pas assez de points de rep à voter jusqu'à la 2ème réponse. Mais je suis en désaccord avec les observations sur la réponse en haut de la page. La deuxième réponse :

Est beaucoup plus efficace dans la pratique. Je ne sais pas pourquoi, mais je cours il contre 800 k + records et la différence est énorme avec l’avantage dont bénéficient la 2e réponse postée ci-dessus. Juste mon 0,02 $

47voto

Winter Points 493

Il s’agit de pure théorie des ensembles qui vous pouvez réaliser avec la `` opération.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X