2010-05-12 101 views
0

因此,我有一個非常大的數據庫,需要處理大約1%的數據以轉儲到Excel電子表格中以生成圖表。理想情況下,我可以選擇數據的子集,然後在其上運行多個select查詢,然後將它們聯合在一起。這甚至有可能嗎?我似乎無法找到其他人試圖做到這一點,並會提高我目前的查詢性能相當多。現在,我有這樣的事情:Oracle SQL:多次子查詢多次組合而無需運行原始查詢

SELECT (
    SELECT (
      SELECT(
       long list of requirements 
     ) 
      UNION 
      SELECT(
       slightly different long list of requirements 
     ) 
    ) 
) 

,這將是很好,如果我能集團的兩個長要求的共性,並有兩個選擇語句是被聯合之間的簡單差異。

回答

2

如果您使用的是Oracle 9i或更高版本,則可以使用子查詢因子分解(SQL Server中的公用表表達式(CTE))。它使用WITH語法:

WITH inline_view_name AS (
    SELECT * 
    FROM YOUR_TABLEs) 
SELECT 
    FROM inline_view_name a 
WHERE ... 
UNION ALL 
SELECT 
    FROM inline_view_name b 
WHERE ... 

...並且可以像您在示例中看到的那樣重複使用。