假设我有树表
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中使用此查询
答案 0 :(得分:2)
您只能在一个级别的外部作用域中引用表(或其别名)。因此,t
不在最深层次的范围内,也无法识别。
只有当一条h
记录的ID高于每条t
记录时,您的查询才有效 - 这似乎不太可能;否则子查询将返回太多行。
您不需要嵌套或任何子查询。无论如何,你有更多的关卡。对于此示例,您可以执行以下操作:
select t.*, h.id from t join h on h.id > t.id
但由于您的示例数据和查询不匹配,因此很难说出您真正需要的内容。