2 hon 3y hon_3y 于 2016.09.25 11:35 提问

Oracle的WHERE字句问题

图片说明

代码如下:SELECT d.dname, ROUND(AVG(e.sal),2)
FROM emp e ,dept d
WHERE e.deptno=d.deptno
GROUP BY d.dname
HAVING AVG(sal)=(
SELECT MAX(AVG(sal))
FROM emp
GROUP BY deptno) ;

2个回答

hon_3y
hon_3y   2016.09.25 11:34

在第一次查询的时候,我忘记写WHERE字句,查询不出结果,但是WHERE字句不是为了消除笛卡儿积吗?为什么写上WHERE字句就有结果了?

wojiushiwo945you
wojiushiwo945you   Ds   Rxr 2016.09.25 15:06

没有 WHERE 子句的交叉联接将产生联接所涉及的表的笛卡尔积。
多表查询必须指定关联查询条件的,你这里没有指定where关联条件的时候,直接使用笛卡尔积的话,可能就查都到结果了。

Csdn user default icon
上传中...
上传图片
插入图片
准确详细的回答,更有利于被提问者采纳,从而获得C币。复制、灌水、广告等回答会被删除,是时候展现真正的技术了!
其他相关推荐
4、Oracle查询语句-where字句
1、where字句的作用 限制表中数据的返回,符合where条件的数据被选中,不符合where条件的数据被过滤掉。 2、where的语法格式 select 字段名 from 表名 where 条件; 3、两个极限条件 1 = 1 恒等 永真 1 != 1 恒假 永假 select id,first_name from s_emp where 1=1; select
mysql join 语句中 on 和 where 的问题
从其他技术文章里有看到关于mysql执行顺序的问题 关于执行顺序,有如结论: FORM: 对FROM的左边的表和右边的表计算笛卡尔积。产生虚表VT1 ON: 对虚表VT1进行ON筛选,只有那些符合的行才会被记录在虚表VT2中。 JOIN: 如果指定了OUTER JOIN(比如left join、 right join),那么保留表中未匹配的行就会作为外部行添加到虚拟表VT2中,产生虚拟表VT3, r
where字句有关的优化+使用where字句代替having字句
where字句有关的优化 注意:时间差不明显是因为数据比较少,数据多的话更好验证 使用where字句代替having字句 1select语句汇总,where字句过滤行 2having字句是分组后才过滤 3行被分组需要时间,降低分组的行数可以提高效率,所以使用where 字句代替havingz字句验证select JOB,max(sal) from emp group by JOB ha
Sql优化系列之(1)__where子句条件优化
1.为什么要进行SQL优化   系统优化中一个很重要的方面就是SQL语句的优化。对于海量数据,劣质SQL语句和优质SQL语句之间的速度差别可以达到上百倍,可见对于一个系统不是简单地能实现其功能就可,而是要写出高质量的SQL语句,提高系统的可用性。 2.where子句条件优化 2.1 SQL语句用大写:   因为oracle总是先解析sql语句,把小写的字母转换成大写的再执行。 2.2 W
Oracle中Using用法
1.静态SQLSQL与动态SQL Oracle编译PL/SQL程序块分为两个种:其一为前期联编(early binding),即SQL语句在程序编译期间就已经确定,大多数的编译情况属于这种类型;另外一种是后期联编(late binding),即SQL语句只有在运行阶段才能建立,例如当查询条件为用户输入时,那么Oracle的SQL引擎就无法在编译期对该程序语句进行确定,只能在用户输入一定的查询
SQL语句中的Having子句与where子句
一。介绍     聚合函数如SUM, COUNT, MAX, AVG等。这些函数和其它函数的根本区别就是它们一般作用在多条记录上。而通过使用GROUP BY 子句,可以让SUM 和 COUNT 这些函数对属于一组的数据起作用。当你指定 GROUP BY region 时,只有属于同一个region的一组数 据才返回一个值。   HAVING子句可以让我们筛选成组后的各组数据
Oracle数据库 —— SQL之select语句(2) where子句和数据排序
5 select语句3.2 where子句(条件子句)1、where的作用,是对表中行数据进行限制,符合where条件数据就被选中,不符合where条件数据就被过滤掉。   select id,salary from s_emp;   select id,salary from s_emp where 1=1;   select id,salary from s_emp where 1=2;2
C# where子句
 where 子句用于指定类型约束,这些约束可以作为泛型声明中定义的类型参数的变量。    1.接口约束。         例如,可以声明一个泛型类 MyGenericClass,这样,类型参数 T 就可以实现 IComparable 接口:Code highlighting produced by Actipro CodeHighlighter (freeware)http://
where子句与having子句的区别
where子句:是在分组之前使用,表示从所有数据中筛选出部分数据,以完成分组的要求,                        在where子句中不允许使用统计函数,没有group by子句也可以使用。 having子句:是在分组之后使用的,表示对分组统计后的数据执行再次过滤,可以使用                        统计函数,有group  by子句之后才可以出现havi
当WHERE子句、GROUP BY子句和HAVING子句同时出现在一个查询中时,SQL的执行顺序
 当WHERE子句、GROUP BY子句和HAVING子句同时出现在一个查询中时,SQL的执行顺序如下: (1) 执行WHERE子句,从表中选取行。 (2) 由GROUP BY 子句对选取的行进行分组。 (3) 执行聚合函数。 (4) 执行HAVING 子句选取满足条件的分组。