当我搜索“如何在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
发生了什么?
答案 0 :(得分:3)
简而言之,WITH子句是内联视图或子查询。当您多次引用某些内容时,或者当您想要抽象复杂查询的某些部分以使其更易于阅读时,它非常有用。
如果您来自SQL Server世界,您也可以将其视为临时表。
所以:
WITH foo as (select * from tab);
select * from foo;
就像
select * from (select * from tab);
虽然它可能更高效,因为x被解析为单个数据集,即使多次查询也是如此。
它还可以减少重复。如果在语句中多次使用子查询,则可以考虑使用WITH将其分解出来。
它与BETWEEN示例无关,它只是作者选择演示概念的方法。