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;
结果为:

发布了89 篇原创文章 · 获赞 4 · 访问量 2万+

猜你喜欢

转载自blog.csdn.net/m0_37879526/article/details/104561900