Mysql: Select avec Jointure Gauche ne fonctionne pas comme prévu
J'ai une requête du type suivant:
select * from tbl_1 where [cond] as aliasA LEFT JOIN tbl_2 as aliasB
ON (aliasA.id = aliasB.id) WHERE aliasB.id IS NULL
Il semble que ça fonctionne sauf que c'est en ignorant la dernière WHERE aliasB.id IS NULL
.
Donc, c'est juste de retourner les résultats de:
select * from tbl_1 where cond as aliasA LEFT JOIN tbl_2 as aliasB
ON (aliasA.id = aliasB.id)
Comment puis-je modifier la requête ci-dessus pour obtenir
les résultats de l'interrogation tbl_1 où [cond] afficher uniquement les lignes qui ne sont pas dans tbl_2?
Merci d'avance!
- n'oubliez pas de marquer réponse comme accepté et upvote si vous avez obtenu l'information que vous voulez
Vous devez vous connecter pour publier un commentaire.
Vous pourriez essayer:
aliasB.id = NULL
sera toujours faux. La manière correcte estaliasB.id IS NULL
ou le plus laid spécifique à MySQLaliasB.id <=> NULL
WHERE
alinéa après le rejoindre, comme Marco écrit.Orignal Sna : Comment puis-je décider quand utiliser les jointures/left join ou des jointures internes Ou comment déterminer quelle table est de quel côté?
Meilleure façon que j'ai trouvé est un coup d'oeil à l'image ci-dessous effacer vous en doutez
Vérifier les cas 1 et 2 de l'image vous donnera votre réponse
et changez-vous que si la condition de
WHERE aliasB.id is NULL
http://dev.mysql.com/doc/refman/5.0/en/working-with-null.html
Vous devez utiliser "EST NULL" au lieu de "= NULL"
Vous devez utiliser
IS NULL
pour vérifier les valeurs NULL, pas= NULL
: