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?
你什么时候回家?
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)