最近在看别人写的代码时,看到了left join on and 的写法,刚开始以为他写错了,是不是少东西了,后来研究了一下,人家是对的,而且这种写法将作表的数据全部保留,有点孤陋寡闻,头一次遇到这种写法,记录下来吧。
LEFT JOIN ON WHERE:在临时表生成后,再对临时表的数据进行过滤,再返回左表。
LEFT JOIN ON AND:在临时表生成的过程时,ON中的条件不管是否为真,都将返回左表。
比如有一个用户表user
有一个成绩表score
想查询总分大于250分的信息
SELECT * FROM `user` a LEFT JOIN score b ON a.id = b.user_id AND total_score > 250
结果是
用where条件查询SELECT * FROM `user` a LEFT JOIN score b ON a.id = b.user_id WHERE total_score > 250
用and这种情况也比较多,比方说就是想统计满足条件的左边表的记录,就算为空,也要列出来,那这种方法就很好使用,否则还要在连接一次用户表。