如何在Oracle SQL中使用WITH(显示示例代码)?

时间:2014-10-26 16:36:08

标签: sql oracle common-table-expression

当我搜索“如何在oracle sql之间进行独占”

时,我在网上找到了这个示例代码

Someone was proving that, in Oracle,默认情况下为BETWEEN

所以他们使用了这样的代码:

with x as (
    select 1 col1 from dual
    union
    select 2 col1 from dual
    union
    select 3 col1 from dual
    UNION
    select 4 col1 from dual

 )

 select *
   from x
  where col1 between 2 and 3

我从未见过这样的例子,WITH发生了什么?

1 个答案:

答案 0 :(得分:3)

简而言之,WITH子句是内联视图或子查询。当您多次引用某些内容时,或者当您想要抽象复杂查询的某些部分以使其更易于阅读时,它非常有用。

如果您来自SQL Server世界,您也可以将其视为临时表。

所以:

WITH foo as (select * from tab);

select * from foo;

就像

select * from (select * from tab);

虽然它可能更高效,因为x被解析为单个数据集,即使多次查询也是如此。

它还可以减少重复。如果在语句中多次使用子查询,则可以考虑使用WITH将其分解出来。

它与BETWEEN示例无关,它只是作者选择演示概念的方法。