SQL SERVER 中,having子句跟where子句有什么区别?

 我来答
百度网友e22b93b
2011-10-13
知道答主
回答量:29
采纳率:0%
帮助的人:18万
展开全部
1、作用对象不同:where子句作用于表(或视图)中得行,而having子句作用于形成的组;
where子句限定查找的行,having子句限定查找的组;

2、执行顺序不同:若查询语句中同时有where子句和Having子句,执行时先去掉不满足where条件的行,然后分组,分组后再去掉不满足having条件的组;

3、where自居不能直接使用聚合函数,having子句条件中可以包含聚合函数

参考资料: http://blog.csdn.net/honeycsf/article/details/6679261

日出之后There
2017-07-13
知道答主
回答量:31
采纳率:0%
帮助的人:4.6万
展开全部
having子句和where子句的区别在于:where子句的搜索条件在进行分组操作之前应用;而having搜索条件在进行分组操作之后。having子句语法和where子句语法类似,但在having子句中可以包含聚合函数。
例如:
select Dep_id, MAX(Wage) as 最高工资 from Employees group by Dep_id having MAX(Wage)>6000
select Dep_id, MAX(Wage) as 最高工资 from Employees where MAX(Wage)>6000 group by Dep_id
即可砍出区别
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
昂昂雄40
2020-01-04
知道答主
回答量:9
采纳率:0%
帮助的人:5732
展开全部
答:HAVING子句与WHERE子句之后都写条件表达式,而且都会根据条件表达式的结果筛选数据,它们是有区别的,主要区别如下。
(1)HAVING子句用于筛选组,而WHERE子句用于筛选记录。
(2)HAVING子句中可以使用聚合函数,而WHERE子句中不能使用聚合函数。
(3)HAVING子句中不能出现既不被GROUP BY子句包含,又不被聚合函数包含的字段,而WHERE子句中可以出现任意的字段。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
万大喵wdm
2011-10-13 · TA获得超过179个赞
知道答主
回答量:118
采纳率:0%
帮助的人:75.5万
展开全部
having 后面可以跟聚合函数,比如having max(ID)>1
where 后面不能,会报错
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(2)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式