SQL Having和WHERE区别

4 篇文章 0 订阅

一、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;

结果为:

 

 

 

 

 

  • 4
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值