left join达不到想要的效果,得到的不是左表的样本数,原因在这!!!

1)区别:左表 left join 右表 on/where
left join 是以左表为主,on是不管条件满不满足,都会保留左表的内容,而where,则是将不满足条件的过滤掉了;
2)左表 left join 右表 on 的时候,左表和右表都必须去重,并且都必须保证on条件后面用到的列不会为null,否则,你left join得到的样本数永远不会是左表样本数,得到一个奇怪的数。特别注意,left join 对两个表的要求比较高:去重,无null值;
sql中对null的处理机制
select * from student join takes on students.ID = takes.ID与
select × from student,takes where students.ID = takes.ID 等价;
但与select * from student join takes where students.ID = takes.ID 有区别

猜你喜欢

转载自blog.csdn.net/sinat_26566137/article/details/80231091