位置:首页 > 网络编程 > 数据库
点击展开栏目简介
数据库技术,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里应该都可以。

上篇:oracle:简单建表sql和添加注释

发表评论 ​共有​条评论
  • 匿名发表