• Oracle PL/SQL之WITH查询


    [转自] http://blog.csdn.net/t0nsha/article/details/6730855


    为什么要用WITH?

    1. 如果需要在一段复杂查询里多次应用同一个查询,用WITH可实现代码重用;

    2. WITH查询类似将查询结果保留到用户临时表里,在大的复杂查询中可以减少IO,有一定的性能优化作用。

    WITH查询有何限制与特性?

    1. 如果当前schema下有与WITH查询别名相同的表,查询中WITH查询生成的表优先;

    2. 只能用于select 语句;

    3. WITH可包含一个或多个查询;

    4. WITH查询可被其它查询或WITH查询引用。

    示例:

    1. duzz$scott@orcl>select * from dept;  
    2.   
    3.     DEPTNO DNAME           LOC  
    4. ---------- --------------- ----------  
    5.         10 ACCOUNTING      NEW YORK  
    6.         20 RESEARCH        DALLAS  
    7.         30 SALES           CHICAGO  
    8.         40 OPERATIONS      BOSTON  
    9.   
    10. Elapsed: 00:00:00.00  
    11. duzz$scott@orcl>with dept as (select 1 a from dual) select * from dept;  
    12.   
    13.          A  
    14. ----------  
    15.          1  
    16.   
    17. Elapsed: 00:00:00.00  
    18. duzz$scott@orcl>with dept as (select 1 a from dual) delete from dept where a=1;  
    19. with dept as (select 1 a from dual) delete from dept where a=1  
    20.                                     *  
    21. ERROR at line 1:  
    22. ORA-00928: missing SELECT keyword  
    23.   
    24.   
    25. Elapsed: 00:00:00.01  
    26. duzz$scott@orcl>with wt1 as (select 1 a, 2 b from dual), wt2 as (select 1 c,3 d from dual) select * from wt1,wt2 where wt1.a=wt2.c;  
    27.   
    28.          A          B          C          D  
    29. ---------- ---------- ---------- ----------  
    30.          1          2          1          3  
    31.   
    32. Elapsed: 00:00:00.00  
    33. duzz$scott@orcl>with wt1 as (select 10 a, 2 b from dual), wt2 as (select deptno,loc from dept,wt1 where deptno=a) select loc from wt2;  
    34.   
    35. LOC  
    36. ---------------------------------------  
    37. NEW YORK  
    38.   
    39. Elapsed: 00:00:00.00  
    40. duzz$scott@orcl>  

  • 相关阅读:
    浅谈CSS盒子模型
    JS中的prototype
    Underscore.js(JavaScript对象操作方法)
    stylus--css 框架使用方法
    LESS CSS 框架简介与使用
    三个 CSS 预处理器(框架):Sass、LESS 和 Stylus
    三.jquery.datatables.js表格编辑与删除
    二.jquery.datatables.js表格数据添加
    git-分支使用方式
    vue2购物车ch2-(商品列表显示)
  • 原文地址:https://www.cnblogs.com/pekkle/p/6568776.html
Copyright © 2020-2023  润新知