sql想问一下面的where限制和having显示有什么区别啊,结果都是一样的啊

来源:百度知道 编辑:UC知道 时间:2024/06/09 10:08:46
SQL> select deptno,avg(sal) from emp where deptno<>10 group by deptno;

DEPTNO AVG(SAL)
---------- ----------
30 1566.66667
20 2175

SQL> select deptno,avg(sal) from emp group by deptno having deptno<>10;

DEPTNO AVG(SAL)
---------- ----------
30 1566.66667
20 2175
是啊,下面一句是可以执行的,事实证明啊

只是一个巧合。直接给你说说where和having的区别,其他你自己应该明白了。
where作用于基本表或视图,作用流程是依次选择每一条记录;而having作用于组,是结合group by使用的,它的作用流程是依次选择group by分组的每一组。【例子】学生选课,是多对多的情况,现在要查询平均分在80分以上的课程。
①用having:sele 课程 from 学生选课 group by 课程 having avg(成绩)>=80&&计算机先分组,再计算各组平均分,选出符合条件的→正确结果。
②用where:sele 课程 from 学生选课 where avg(成绩)>=80 group by 课程&&计算机直接对所有学生记录计算平均分,然后试图进行分组、选择→结果你自己试试吧!

还有余问可以发消息给我

如果可以的话
那么这两句还真都是一个意思。。。

--------------------------------------------------------
奇怪,这句也能执行吗?
SQL> select deptno,avg(sal) from emp group by deptno having deptno<>10;

having 后面只能用聚合函数啊