有三张表
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中