我正在寻找一种可靠的算法方法来在Oracle中嵌套查询,而无需解析和重建SQL语句。在DB2,MYSQL和SQLITE中,我可以简单地从内部子查询中设置的最大列嵌套到外部查询中的最小列,如下所示:
SELECT A, B FROM (
SELECT A, B, C FROM (
SELECT A, B, C, D FROM (
SELECT * FROM myTable
)
)
)
)
这对Oracle不起作用,我不得不使用WITH子句,但这允许我进行一级嵌套,如
WITH Q1 as (
SELECT * FROM myTable
)
SELECT A, B FROM Q1
是否存在一种在Oracle中嵌套select语句的算法方法,如上面的DB2或MySQL
您始终可以假设它是单个表格。查询是自动生成的
找到根本原因:
我的代码假定需要“AS别名”并将其附加到子查询中,如“选择A,B from(从myTable中选择A,B,C) AS Q1 ”--- Oracle不喜欢这样,并给出错误“缺少右括号”
答案 0 :(得分: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.