【问题标题】:How to pass table alias to subsubquery in SQL?如何将表别名传递给 SQL 中的子查询?
【发布时间】:2012-09-12 23:26:32
【问题描述】:

我一直在为SQL 苦苦挣扎一段时间。我必须构建一个查询以从表中返回第二高的 id。听起来很简单,尤其是如果您找到了that link

但我有一个更复杂的查询:

SELECT 
  p.column1,
  p.column2,
  p.column3,
  p.column4,
  (
    SELECT 
      p.column1 
    FROM 
      p_table p
    WHERE 
      p.column2 = (
        SELECT
          id
        FROM (
          SELECT 
            id,
            RANK() OVER (ORDER BY id DESC) rank_id
          FROM 
            other_table 
          WHERE 
            field = p.column3
        )
        WHERE
          rank_id = 2
      )
    ) AS sth
FROM ...

Oracle 在p.column3 上说ORA-00904: Unknown identifier。 我理解它为什么这么说 - 它不将 p 识别为表名别名。

是否可以将其传递给嵌套查询?

【问题讨论】:

    标签: sql select oracle10g scope correlated-subquery


    【解决方案1】:

    您不能将查询中的列传递给嵌套查询的嵌套查询。

    我认为这可以做同样的工作:

    选择 p.column1, p.column2, p.column3, p.column4, ( 选择 p.column1 从 p_table p 在哪里 (p.column2, 2) = (SELECT id, RANK() OVER (ORDER BY id DESC) rank_id 从 其他表 在哪里 字段 = p.column3 ) ) 作为某事 从

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-06-16
      • 2021-03-01
      • 1970-01-01
      相关资源
      最近更新 更多