看了半天楞是没看明白,尤其是相关子查询。都搞迷糊了,谁帮忙解释下啊
希望不要copy的。
谢谢啦!

解决方案 »

  1.   

    今天周六人不多吧子查询分为相关子查询和独立子查询,相关,顾名思义,就是说它的查询结果与外界查询存在关联。
    举个例子,
    有表A(id number, name varchar2(20)),B(id number),现在要查询A表中id在B表存在的记录,多种写法,其中相关子查询可以写成这样:
    select * from A where exists (select * from B where b.id = a.id);
    对于这个子查询来讲,如果没有a.id传入,那b也没法查。独立子查询则是结果不依赖外部查询,像这样:
    select * from A where exists (select * from B where b.id > 10);
    只要b中有id > 10的记录,a的记录就可以查出来,不管a.id是什么值。不必死记概念,何况记了也没用,用多了自然就熟悉了
      

  2.   

    shiyiwan 解释的很好了主要是这类查询效率肯定不高,主查询查询一次,子查询就要遍例一次表但是这种查询可以解决特定的问题
      

  3.   

    尝试回答一下:独立子查询:
    (见emp表)
    select empno,ename,sal,job
    from emp
    where sal < all(select avg(sal) from emp group by job)//不管外面的结果是什么,select avg(sal) from emp group by job得出的结果集应该是不变的吧相关子查询?
    内部的子查询与外面的有关连的
      

  4.   

    子查询就是多个select语句组成的,比如下面这个,我要查寻工资最少的那一个人:
    select empno,ename,sal,job
    from emp
    where sal < (select min(sal) from emp )
      

  5.   

    简单的我大概可以理解的,但是复杂的就不行了。下面这个就看不明白:
    显示每个部门的最高工资的雇员信息
    select distinct deptno,(select max(sal) from emp b where b.deptno=a.deptno) maxsal
    from emp a order by deptno;
    这个怎么理解啊!!!