• <ruby id="5koa6"></ruby>
    <ruby id="5koa6"><option id="5koa6"><thead id="5koa6"></thead></option></ruby>

    <progress id="5koa6"></progress>

  • <strong id="5koa6"></strong>
  • Oracle數據庫之SQL子查詢詳解(2)

    發表于:2013-05-31來源:Csdn作者:一個小菜仔點擊數: 標簽:oracle
    select ename,sal,deptno from emp where salany ( select sal from emp where deptno = 30 ) ; --ANY操作符的使用 --只要員工的工資存在這種情況: --即他的工資情況比30部門的其中

      select ename,sal,deptno from emp

      where sal>any

      (

      select sal from emp where deptno = 30

      )

      ;

      --ANY操作符的使用

      --只要員工的工資存在這種情況:

      --即他的工資情況比30部門的其中一個人的工資多就查詢出來

      select ename,sal,deptno from emp

      where sal>any

      (

      select sal from emp where deptno = 30

      )

      ;

      “>ANY”意味著大于最小值,"

      多列子查詢

      指的是子查詢語句返回的是多列。

      例如查詢:某個名叫SMITH的員工,但是由于員工的名字可能出現重復,因此需要結合其工作

      和和部門id進行判斷。

      [sql] view plaincopyprint?

      --多列子查詢實例

      select ename ,job ,deptno from emp

      where (ename,job,deptno) =

      (

      select ename, job,deptno from emp

      where ename='SMITH'

      )

      ;--這里主要在于說明多列子查詢的使用,并不注重其實際意義

      --多列子查詢實例

      select ename ,job ,deptno from emp

      where (ename,job,deptno) =

      (

      select ename, job,deptno from emp

      where ename='SMITH'

      )

      ;--這里主要在于說明多列子查詢的使用,并不注重其實際意義

      ● 成對比較

      [sql] view plaincopyprint?

      --成對比較

      select ename ,sal,comm ,deptno from emp

      where (sal,nvl(comm,-1)) in

      (

      select sal,nvl(comm,-1) from emp

      where deptno = 30

      )

      --成對比較

      select ename ,sal,comm ,deptno from emp

      where (sal,nvl(comm,-1)) in

      (

      select sal,nvl(comm,-1) from emp

      where deptno = 30

      )

      ;

      ● 非成對比較

      [sql] view plaincopyprint?

      --非成對比較

      elect ename ,sal,deptno,comm from emp

      where sal in

      (

      select sal from emp

      where deptno = 30

      )

      and nvl(comm,-1) in

      (

      select nvl(comm,-1) from emp

      where deptno = 30

      )

      ;

      --非成對比較

      select ename ,sal,deptno,comm from emp

      where sal in

      (

      select sal from emp

      where deptno = 30

      )

      and nvl(comm,-1) in

      (

      select nvl(comm,-1) from emp

      where deptno = 30

      )

      ;

      其他子查詢

      1、相關子查詢

      是指需要引用主查詢表列的子查詢 語句。相關子查詢是通過exists 來實現的 。

      [sql] view plaincopyprint?

      --查詢在NEW YORK工作的員工的信息

      select ename ,job ,sal ,deptno from emp

      where exists

      (

      select 1 from dept

      where dept.deptno = emp.deptno

      and dept.loc ='NEW YORK'

      )

      ;

      --查詢在NEW YORK工作的員工的信息

      select ename ,job ,sal ,deptno from emp

      where exists

      (

      select 1 from dept

      where dept.deptno = emp.deptno

      and dept.loc ='NEW YORK'

      )

      ;

      思考:相關子查詢的執行過程:

      相關子查詢會引用外部查詢的一列或多列,在執行的時候外部查詢的每一行被一次一行的

      傳遞給子查詢,子查詢依次讀取外部查詢傳遞過來的每一個值,并將其用到子查詢上,直到外部

      查詢的所有行都用完為止,然后返回查詢結果。

      2、FROM子句中的子查詢

      在from子句中使用子查詢的時候子查詢會被當做一個view對待,需要給子查詢指定別名。

      [sql] view plaincopyprint?

      --查看比本部門平均工資高的員工信息

      select ename,job,sal from emp ,

      (

      select deptno,avg(sal) as avgsal from emp

      group by deptno

      ) tmp_dept

      where emp.deptno=tmp_dept.deptno and sal >tmp_dept.avgsal;

      --查看比本部門平均工資高的員工信息

      select ename,job,sal from emp ,

      (

      select deptno,avg(sal) as avgsal from emp

      group by deptno

      ) tmp_dept

      where emp.deptno=tmp_dept.deptno and sal >tmp_dept.avgsal;

      3、DML語句中使用子查詢

      [sql] view plaincopyprint?

      --DML語句中使用子查詢

      --insert中

      insert into employee (id,name,title,salary)

      select emptno,ename ,job,sal from emp;

      --update中

      update emp set (sal,comm)=

      (

      select sal,comm from emp

    原文轉自:http://blog.csdn.net/kiritor/article/details/8782257

    老湿亚洲永久精品ww47香蕉图片_日韩欧美中文字幕北美法律_国产AV永久无码天堂影院_久久婷婷综合色丁香五月

  • <ruby id="5koa6"></ruby>
    <ruby id="5koa6"><option id="5koa6"><thead id="5koa6"></thead></option></ruby>

    <progress id="5koa6"></progress>

  • <strong id="5koa6"></strong>