A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 陈世伟 黑马帝   /  2012-4-30 07:40  /  1831 人查看  /  4 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

having应该怎么用,having和where有什么区别?

评分

参与人数 1技术分 +2 收起 理由
郑文 + 2

查看全部评分

4 个回复

倒序浏览
在Where中不能使用聚合函数,必须使用Having,Having要位于Group By之后,
SELECT FAge,COUNT(*) AS 人数 FROM T_Employee GROUP BY FAge
HAVING COUNT(*)>1
注意Having中不能使用未参与分组的列,Having不能替代where。Having 是对组进行过滤。

评分

参与人数 1技术分 +2 收起 理由
郑文 + 2

查看全部评分

回复 使用道具 举报
Where表示的是对源表中的字段或字段的一部分进行的筛选,而Having是对分组以后的结果进行筛选,一般情况下是对合计后产生的字段进行的筛选,如求和、求平均、计数、求最大值最小值等,并且Having子句要和Group by子句一起使用

评分

参与人数 1技术分 +2 收起 理由
郑文 + 2

查看全部评分

回复 使用道具 举报
having是group by后的条件筛选

评分

参与人数 1技术分 +1 收起 理由
宋天琪 + 1

查看全部评分

回复 使用道具 举报
select class_id,COUNT(*) from tb_News

group by class_id
--查询的字段不能出现没有在group by中的字段,可以使聚合函数,但是聚合函数不能出现在where中
select class_id,COUNT(*)from tb_News group by class_id
having COUNT(*)>1
--having出现的字段也是必须在select中出现的字段,是对分组后信息的过滤,  可以有聚合函数

评分

参与人数 1技术分 +2 收起 理由
宋天琪 + 2

查看全部评分

回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马