转载部分数据库mysql

SQL JOIN 中 on 与 where 的区别

2019-01-24  本文已影响11人  良人与我

出处 http://www.runoob.com/sql/sql-join-inner.html

数据库在通过连接两张或多张表来返回记录时,都会生成一张中间的临时表,然后再将这张临时表返回给用户。

在使用 left jion 时,on 和 where 条件的区别如下:

1、 on 条件是在生成临时表时使用的条件,它不管 on 中的条件是否为真,都会返回左边表中的记录。
2、where 条件是在临时表生成好后,再对临时表进行过滤的条件。这时已经没有 left join 的含义(必须返回左边表的记录)了,条件不为真的就全部过滤掉。

left join 时候

情况1

student 表数据为


image.png

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


image.png

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


image.png

情况2

一个 student 对应了多个 teacher


image.png

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


jieguo
上一篇下一篇

猜你喜欢

热点阅读