left join on
问题:
select * from A left join f on e.cust=f.account_id where f.status='0'
与
select * from A left join f on e.cust=f.account_id and f.status='0'
的区别
在做外连查询的时候ON里面的条件是在外连执行之前筛选的的
where后的查询条件在外联之后执行
上面哪个是左联后!再选出f.status='0'的,等于在两个表连接 了以后 再去 做过滤
WHERE哪个说白了就是连主表都砍掉的, 结果集里只存在f.status='0'的结果
on 里的条件是先执行的 ,如果是and ,就可以认为是on的条件先执行,
不用在连接之后再去过滤
left join f on e.cust=f.account_id and f.status='0'
这个语句会把两个表的数据都列出来
不过f这个表的数据并不会全部列出,只会列出f表的 f.status='0' 的数据
与
select * from A left join f on e.cust=f.account_id and f.status='0'
的区别
在做外连查询的时候ON里面的条件是在外连执行之前筛选的的
where后的查询条件在外联之后执行
上面哪个是左联后!再选出f.status='0'的,等于在两个表连接 了以后 再去 做过滤
WHERE哪个说白了就是连主表都砍掉的, 结果集里只存在f.status='0'的结果
on 里的条件是先执行的 ,如果是and ,就可以认为是on的条件先执行,
不用在连接之后再去过滤
left join f on e.cust=f.account_id and f.status='0'
这个语句会把两个表的数据都列出来
不过f这个表的数据并不会全部列出,只会列出f表的 f.status='0' 的数据