Comment faire pour récupérer des non-correspondance des résultats dans mysql
Je suis sûr que c'est simple, mais comment puis-je écrire une requête mysql qui joint deux tables, puis retourne uniquement les enregistrements de la première table qui ne correspondent pas. Je veux que ce soit quelque chose comme:
Select tid from table1 inner join table2 on table2.tid = table1.tid where table1.tid != table2.tid;
mais cela ne semble pas faire beaucoup de sens!
OriginalL'auteur | 2009-07-03
Vous devez vous connecter pour publier un commentaire.
Vous pouvez utiliser un
left outer join
pour ce faire:Ce que ce n'est qu'il faut à votre première table (
table1
), joint avec votre deuxième tableau (table2
), et remplitnull
pour latable2
de colonnes dans une ligne danstable1
qui ne correspond pas à une ligne danstable2
. Ensuite, il filtre en sélectionnant uniquement lestable1
lignes où aucune correspondance n'a pu être trouvé.Alternativement, vous pouvez également utiliser
n'existe pas
:Effectue un
left semi join
, et fait essentiellement la même chose que leleft outer join
. En fonction de votre index, l'un peut être plus rapide que l'autre, mais les deux sont des options viables. MySQL a une bonne documentation sur l'optimisation de la rejoint, de sorte que vous devriez vérifier cela..Le
left outer join
oùis null
est exactement ce dont j'avais besoin... +1 pour l'aide!!OriginalL'auteur Eric