您的位置:首页 > 其它

where、having和on的区别

2017-01-17 11:26 211 查看

where、having和on的区别

having 与where 子句类似,均用于设置限定条件,where子句的作用是在对查询结果前,将不符合where条件的行去掉,条件中不能包含聚合函数,使用where条件显示特定的行。

having子句作用是筛选满足条件的组,限制返回的结果集,即在分组之后过滤数据,条件中经常包含聚合函数,使用having 条件显示特定的组,也可以使用多个分组标准进行分组。

例如:

select deptno,sum(sal) from emp
where sal>1200
group by deptno
having sum(sal)>8500
order by deptno


在使用left jion时,on和where条件的区别如下:

1、 on条件是在生成临时表时使用的条件,它不管on中的条件是否为真,都会返回左边表中的记录。

2、where条件是在临时表生成好后,再对临时表进行过滤的条件。这时已经没有left join的含义(必须返回左边表的记录)了,条件不为真的就全部过滤掉。

参考资料1:Oracle中group by用法

参考资料2:left join on 和where条件的放置
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: