如何在oracle的嵌套查询的where子句中使用select参数?

时间:2015-06-07 07:11:06

标签: oracle11g nested-queries

假设我有树表

   h          y         t
-------     -----   ------------
id           id      id   name
-------     -----   ------------
1             1      1    john
2             2      2    alex
3             8      6    maggie

我有这样的查询:

select t.*,(select  y.id from (select * h where h.id > t.id) y)  t

问题是我无法在内部查询中使用t.id。我想知道问题是什么,解决方案是什么? 我在oracle 11g中使用此查询

1 个答案:

答案 0 :(得分:2)

您只能在一个级别的外部作用域中引用表(或其别名)。因此,t不在最深层次的范围内,也无法识别。

只有当一条h记录的ID高于每条t记录时,您的查询才有效 - 这似乎不太可能;否则子查询将返回太多行。

您不需要嵌套或任何子查询。无论如何,你有更多的关卡。对于此示例,您可以执行以下操作:

select t.*, h.id from t join h on h.id > t.id

但由于您的示例数据和查询不匹配,因此很难说出您真正需要的内容。