Mysql join操作

1.left join 会以左表为全量数据,然后on匹配右表的,所以left join里面对左表的on条件无效。right join同理。

2.left join和right join的on和where区别:on作为连接的条件(左连接时,on左表的条件无效,on右表的条件使得右表对应不满足条件的行为NULL,行数和没有条件还是一样),on先生成临时表,where再在临时表中筛选。

3.左连接时,尽量选择数据量小的表作为左表,可以减少筛选次数。右连接同理。

4.inner join的on和where作用相同,但是inner join只是自己判断选择哪个表作为左表,临时表的数据量不会变小。

 

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

a. on条件是在生成临时表时使用的条件,它不管on中的条件是否为真,都会返回左边表中的记录。

b.where条件是在临时表生成好后,再对临时表进行过滤的条件。这时已经没有left join的含义(必须返回左边表的记录)了,条件不为真的就全部过滤掉。

发表评论

邮箱地址不会被公开。 必填项已用*标注