2015-06-07 72 views
3

假設我有樹表如何在oracle的嵌套查詢的where子句中使用select參數?

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

你正在做什麼?爲什麼你使用這麼多嵌套查詢? – uhs

+0

你的例子至少缺少'from',數據暗示'y'是一個單獨的表,而不僅僅是一個內聯視圖。你能澄清這個例子嗎?有沒有你使用子查詢而不是聯接的共振 - 你認爲這對你的真實的,可能更復雜的查詢是必要的嗎? –

回答

2

你只能在一個級別的外部作用域中引用表(或他們的別名)。所以t不在最內層的範圍內,並且不被識別。

只有當單個h記錄的ID高於每個t記錄時,您的查詢纔會有效 - 這似乎不太可能;否則子查詢將返回太多的行。

這裏不需要嵌套或任何子查詢。無論如何,你有更多的關卡。對於這個例子,你可以這樣做:

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

但由於你的示例數據和查詢不匹配,很難說出你真正需要什麼。

相關問題