Mysql中left join on and和left join on where 的区别

来源:互联网 发布:淘宝uv pv在哪里查看 编辑:程序博客网 时间:2024/05/21 19:28

最近在看别人写的代码时,看到了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这种情况也比较多,比方说就是想统计满足条件的左边表的记录,就算为空,也要列出来,那这种方法就很好使用,否则还要在连接一次用户表。

原创粉丝点击