标题: where和having两者的主要区别是什么? [打印本页] 作者: 李贤贤 时间: 2013-3-9 09:13 标题: where和having两者的主要区别是什么? where和having两者的主要区别是什么?作者: 李晓泉 时间: 2013-3-9 09:25
where作用于基本表或视图,作用流程是依次选择每一条记录;而having作用于组,是结合group by使用的,它的作用流程是依次选择group by分组的每一组。【例子】学生选课,是多对多的情况,现在要查询平均分在80分以上的课程。①用having:sele 课程 from 学生选课 group by 课程 having avg(成绩)>=80&&计算机先分组,再计算各组平均分,选出符合条件的→正确结果。②用where:sele 课程 from 学生选课 where avg(成绩)>=80 group by 课程&&计算机直接对所有学生记录计算平均分,然后试图进行分组、选择→结果你自己试试吧!作者: 张洪慊 时间: 2013-3-9 09:39 本帖最后由 张洪慊 于 2013-3-9 09:44 编辑
1.where 查询满足指定条件的元组(行)
例如:
---查询学生表中年龄<20的学生的姓名和年龄
select Sname,Sage from Student where Sage<20
但是不能把where换成having
2.了解下group by
group by 将查询结果 按某一列或 多列的值分组,值相等的为一组
例如:
我想知道在一个班中男生有多少人.
select count(*),Ssex from Student
group by Ssex ---分成'男'的一组,'女'的一组
having Ssex='男' --对分完的组进行筛选-->我只要男的一组
总结:where子句与having 短语的区别在于作用对象不同.where子句作用对于基本表或视图,
从中选择满足条件的元组(行).having短语作用于组,从中选择满足条件的组.
having与group by连用,如果用group by,一般有聚合函数(count,sum,avg...).作者: 郝滨 时间: 2013-3-9 09:40
where是sql中的一个指令,一般用于规定选择的标准指定用于限制返回的行的搜索条件,是有条件地从表中选取数据,跟在select后面,只有满足条件的数据才会查询显示出来