2013-07-14 155 views
0

我正在尋找一種可靠的算法在Oracle中嵌套查詢,而無需解析和重新生成SQL語句。在DB2中,MySQL和SQLite我可以簡單地從內部子查詢設置爲最小列集非常外部查詢這樣的大列巢:Oracle嵌套多個子查詢

SELECT A, B FROM (
     SELECT A, B, C FROM (
      SELECT A, B, C, D FROM (
       SELECT * FROM myTable 
       ) 
      ) 
    ) 
) 

這並不適用於甲骨文的工作,我不得不使用WITH子句,但是,讓我築巢一樣

WITH Q1 as (
     SELECT * FROM myTable 
      ) 
      SELECT A, B FROM Q1 

的一個層面是有像上述

DB2或MySQL在甲骨文巢select語句你總是可以假定它是一個單一的表的算法的方式。該查詢會自動

產生實測值的根本原因:

我的代碼假定有一個「AS別名」需要,並將其追加到子查詢如「選擇A,B從(從選擇A,B,C myTable)AS Q1「--- Oracle不喜歡這樣,並給出一個錯誤」缺少右括號「

+1

您在發佈的代碼中有四個權限但只有三個左右的括號中有太多的右括號。分享並享受。 –

回答

1

你是什麼意思的」不工作「?你似乎想要的結構在Oracle中很好地工作

SQL> select ename from (
    2 select ename, empno from (
    3  select ename, empno, job from (
    4  select ename, empno, job, mgr from (
    5   select * from emp 
    6  ) 
    7  ) 
    8 ) 
    9 ); 

ENAME 
---------- 
SMITH 
ALLEN 
WARD 
JONES 
MARTIN 
BLAKE 
CLARK 
SCOTT 
KING 
TURNER 
ADAMS 
JAMES 
FORD 
MILLER 

14 rows selected. 
+0

如果我錯了(我希望是我),那麼我的代碼只能在Oracle包裝上失敗,我正在調查爲什麼。先謝謝你。 – seedhom