口诀
左联记左全,右表随条件;
WHERE严过滤,连表别忘记。
左联记左全
LEFT JOIN总是会返回左表(LEFT JOIN语句前的表)的所有记录
右表随条件
右表(LEFT JOIN语句后的表)的记录返回取决于JOIN条件;如果JOIN条件不满足,则相关列填充NULL。
WHERE严过滤
WHERE子句会严格过滤所有结果,包括NULL值
连表别忘记
在LEFT JOIN后面,如果要保留左表的全部记录,记得不要在WHERE子句中过滤掉右表因不满足条件而变成NULL的记录
前两句口诀都好理解,后两句总结起来就是
使用LEFT JOIN时,如果想要保留左表的所有记录,就将右表可能导致排除左表记录的条件放在ON子句里面;
如果希望某个条件严格过滤掉不满足条件的所有记录,不论是左表还是右表的,就将该条件放在WHERE子句里。
评论区