2014-10-26 23 views
1

我發現這個示例代碼在網上,當我搜索「怎樣做一個獨家的Oracle SQL之間」Oracle SQL中如何使用WITH(示例代碼顯示)?

Someone was proving that, in OracleBETWEEN是默認的包容性。

所以他們用這樣的代碼:

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

+6

它被稱爲公用表表達式。搜索該標籤'[common-table-expression]'這也記錄在手冊中:http://docs.oracle.com/cd/E11882_01/server.112/e26088/statements_10002.htm#i2077142 – 2014-10-26 16:38:52

回答

3

簡而言之,WITH子句是一個內聯視圖或子查詢。當您多次引用某些內容時,或者想要抽象複雜查詢的某些部分以使其更易於閱讀時,這非常有用。

如果你是來自SQL Server的世界,你也可以把它想象成一個臨時表。

所以:

WITH foo as (select * from tab); 

select * from foo; 

就像

select * from (select * from tab); 

雖然它可能是更有效,因爲x被解析爲一個單一的數據集,即使多次查詢。

它也減少了重複。如果您在聲明中多次使用子查詢,則可以考慮使用WITH將其分解。

它與BETWEEN例子無關,它只是作者選擇的方法來展示一個概念。

相關問題