having和where的区别

having和where的区别,第1张

having 和where 都是用来筛选用的,having 是筛选组 而where是筛选记录。扩展资料

1.类型:

“Where”是一个约束声明,在查询数据库的.结果返回之前对数据库中的查询条件进行约束,即在结果返回之前起作用,且where后面不能使用“聚合函数”;

“Having”是一个过滤声明,所谓过滤是在查询数据库的结果返回之后进行过滤,即在结果返回之后起作用,并且having后面可以使用“聚合函数”。

2.使用的角度:

where后面之所以不能使用聚合函数是因为where的执行顺序在聚合函数之前,

如下面这个sql语句:select  sum(score) from student  group by student.sex where sum(student.age)>100

having既然是对查出来的结果进行过滤,那么就不能对没有查出来的值使用having,

如下面这个sql语句:  select  student.id,student.name from student having student.score >90

Having是筛选组,where是筛选记录。

可以这样理解:Having是先分组在进行筛选,而where是先筛选再进行分组。

对于有Group by子句的SQL语句,切记与Having组合使用。但不一定要有Having子句。

一般情况下分组筛选的时候用Having,其他情况下用where。

select class_num,count(*) from student where score>=85

group by class_num having count(*)>1

查询有多个学生的成绩大于等于85分班级编号。(也就是说如果一个班级的学生成绩大于85那么他就查询出来)。

where针对每一条记录进行筛选,而Having对班级的分组,count(*)>1计算多于两个的班级。

用法的区别:

1、having先分组后计算,where反之。

2、having后面可以跟聚合函数,where不可以。

应用范围的区别:

1、where ···(只能对分组前的属性进行筛选)

2、having ···(只能对分组后的每个组的整体属性进行筛选,用聚合函数体现)

近义词

1、why 

读音:英 [waɪ]   美 [waɪ]    

释义:adv. 为什么 conj. ... 的理由;为什么

int. 咳;哎呀n. 理由;谜

例句:She knows why the metal is the good conductor.

她知道金属为什么是好的导体。

2、when 

读音:英 [wen]   美 [wen]    

释义:adv. 什么时候;当 ... 时

conj. 然后;可是;当 ... 时  pron. 什么时候  n. 时间

例句:When are you going home? 

你什么时候回家?


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/sjk/9926498.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-03
下一篇 2023-05-03

发表评论

登录后才能评论

评论列表(0条)

保存