数据库技术,mysql,oracle
sql:连接查询left join的条件放在on里和where里的区别
left join默认就是左边的主表信息全部显示,右边的副表有值的显示值,没有值的显示null。
条件写在on里是对主表做筛选限制,on里对副表的筛选无效;
条件写在where里是先查出主表的数据,再根据where里的条件筛选出满足条件的数据,条件既可以是对主表的筛选,也可以是对副表的筛选。
例子:
select a.*, b.clicks from a left join b on a.id=b.aid and a.id<100 and b.clicks<500
筛选出a表id小于100的数据,再关联b表查询。 b.clicks条件不起作用,只有对a表的条件才有作用;
-----------------------
select a.*, b.clicks from a left join b on a.id=b.aid and a.id<100 where b.clicks<500
a表关联b表查询a表中id小于100的数据,再从中筛选出满足b表clicks<500的数据。 b.clicks条件就起了作用。
因此,要对副表做筛选,条件要写到where里,对主表筛选,写在on里和where里应该都可以。