SQL JOIN 中 on 与 where 的区别

出处 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 表数据为

《SQL JOIN 中 on 与 where 的区别》 image.png

关联表中 多了一个 student 的id 为8 ,但是不在 student 表中

《SQL JOIN 中 on 与 where 的区别》 image.png

结果以左表为主(不会出现左表是null的情况)

《SQL JOIN 中 on 与 where 的区别》 image.png

情况2

一个 student 对应了多个 teacher

《SQL JOIN 中 on 与 where 的区别》 image.png

结果student的相同数据 出现 多行 ,这里不注意的话 统计结果可能出错

《SQL JOIN 中 on 与 where 的区别》 jieguo

    原文作者:良人与我
    原文地址: https://www.jianshu.com/p/f8084558f1ec
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞