【问题标题】:Oracle nested multiple subqueriesOracle嵌套多个子查询
【发布时间】:2013-07-15 07:10:46
【问题描述】:

我正在寻找一种可靠的算法方法来在 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

有没有一种算法方法可以在上面的 DB2 或 MySQL 等 Oracle 中嵌套 select 语句

您总是可以假设它是一个表。查询是自动生成的

找到根本原因:

我的代码假定需要一个“AS 别名”并将其附加到子查询中,如“Select A, B from (select A, B, C from myTable) AS Q1” --- Oracle 不喜欢这样并给出错误“缺少右括号”

【问题讨论】:

  • 您发布的代码中有太多右括号(四个右括号,但只有三个左括号)。分享和享受。

标签: oracle subquery nested


【解决方案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.

【讨论】:

  • 如果我错了(我希望我错了),那么我的代码仅在 Oracle 包装器上失败,我正在调查原因。提前谢谢你。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-05-22
  • 2013-01-19
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多