出处 http://www.runoob.com/sql/sql-join-inner.html
数据库在通过连接两张或多张表来返回记录时,都会生成一张中间的临时表,然后再将这张临时表返回给用户。
在使用 left jion 时,on 和 where 条件的区别如下:
1、 on 条件是在生成临时表时使用的条件,它不管 on 中的条件是否为真,都会返回左边表中的记录。
2、where 条件是在临时表生成好后,再对临时表进行过滤的条件。这时已经没有 left join 的含义(必须返回左边表的记录)了,条件不为真的就全部过滤掉。
(所以考虑到性能 减少临时表的大小,应该将过滤条件放到 on 。)
left join 时候
情况1
student 表数据为
关联表中 多了一个 student 的id 为8 ,但是不在 student 表中
结果以左表为主(不会出现左表是null的情况)
情况2
一个 student 对应了多个 teacher
结果student的相同数据 出现 多行 ,这里不注意的话 统计结果可能出错