SQL Having和WHERE区别

一、select查询
SELECT [ALL|DISTINCT] <目标表达式>....
FROM <表名或者视图名>..
[WHERE <条件表达式>]
[GROUP BY <列名 1> [HAVING] <条件表达式>]
[ORDER BY <列名 2> [ASC|DESC]]
1.对于group by:
 主要是用来通过对某个字段进行分组查询。

例如数据:

执行下列语句:

SELECT Ssex,COUNT(Ssex) FROM `student` GROUP BY Ssex;
对性别进行分组查询,结果如下: 

2.对于having
一开始以为是分组之前进行条件筛选,入了个坑。它和where关键字有个区别是where是group by之前进行条件筛选,而having是group by之后进行条件筛选,还有where后的条件表达式里不允许使用聚合函数,而having可以。

例如:

A.测试where

SELECT Ssex,COUNT(Ssex) FROM `student` WHERE Sage>17 GROUP BY Ssex;
表示group by之前筛选年龄大于17岁的人。结果为:

 

B.测试having

首先我先统计男女的各自总人数:

SELECT Ssex,COUNT(Ssex) FROM `student` GROUP BY Ssex;
则各自人数为:

 

然后我再测试以having条件方式,我测试的条件为 group by 之后数量大于6的Ssex:

SELECT Ssex,COUNT(Ssex) FROM `student` GROUP BY Ssex HAVING COUNT(Ssex)>6;
结果为:

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值