sql join 和 left join 区别 on 和 where 区别

有三张表
film

 

 category

 

 film_category

 

 left join 查询结果

select *
from film f left join film_category fc on f.film_id=fc.f_id

select *
from film f left join film_category fc on f.film_id=fc.f_id
where  fc.c_id is null

select *
from film f left join film_category fc on f.film_id=fc.f_id
and fc.c_id is null

 

 

 

 

 join查询结果

select *
from film f join film_category fc on f.film_id=fc.f_id

select *
from film f join film_category fc on f.film_id=fc.f_id
where fc.c_id is null

 

 

select *
from film f join film_category fc on f.film_id=fc.f_id
and fc.c_id is null

 

 

 

结论:

1.join 的where 和on没有区别,内链接,只有复核条件的才会显示出来,条件加在那里都可以

2.left join 的where和on有区别,left join 不管on的条件是否匹配都是显示左表的全部内容,然后形成虚拟表,通过where去筛选临时表中满足条件的记录

如果筛选条件在on就会造成匹配不到的数据,左侧还是左表的内容,右边全是null而忽略链接条件 

left join 筛选的主要是右表,如果筛选不到就会在临时表中显示null,这里on加的是链接条件,筛选条件在where中

 

where不能放函数,函数条件需要放在having中

 

 

posted @ 2020-09-08 17:14  啦啦拉扎尔  阅读(740)  评论(0编辑  收藏  举报