今天搞懂了on where 和 on and的区别,mark一下。其实本质上还是对and和where的本质要了解:and只是一个连接词,where是从句开头。
SELECT *
FROM table_a a LEFT JOIN table_b b
on a.id = b.id
where a.name = 'Lucy'
SELECT *
FROM table_a a LEFT JOIN table_b b
on a.id = b.id
and a.name = 'Lucy'
在上面两个代码中,第一个代码是指,a左连接b之后,where对整张表进行筛选,条件为a.name = 'Lucy',最后select出这张子表的所有数据。
第二个代码是说,a左连接b,条件是a.id = b.id且a.name = 'Lucy',最后select出全部数据。所以总体来说就是先对a进行筛选,再合并。
——————————————————————————————————————————
有这个问题的原因是今天看coursera的课程,然后在error correction那里这道题看不懂,所以和同学讨论了一下区别。