我必須執行由某些用戶創建的SQL並顯示其結果。一個例子SQL中,可以是這樣的:使用rownums在子查詢中不明確定義的列
SELECT t1.*, t2.* FROM table1 t1, table2 t2, where table1.id = table2.id
這個SQL工作得很好,因爲它是,但我需要手動添加分頁,並顯示了這個rownum,所以SQL結束了這個樣子。
SELECT z.*
FROM(
SELECT y.*, ROWNUM rn
FROM (
SELECT t1.*, t2.* FROM table1 t1, table2 t2, where table1.id = table2.id
) y
WHERE ROWNUM <= 50) z
WHERE rn > 0
這拋出異常:「ORA-00918:列定義的含糊」,因爲Table 1和表2都包含具有相同的名稱(「ID」)的字段。
什麼可能是避免這種情況的最好方法?
問候。
- UPDATE
最後,我們不得不去爲醜陋的方式,並分析每個SQL執行之前到來。基本上,我們解決星號來發現我們需要添加哪些字段,並用唯一的ID來區別每個字段。這引入了性能損失,但我們的客戶明白這是滿足要求的唯一選擇。
我會標記Lex答案,因爲它是我們結束工作的解決方案。
的可能重複的[ORA-00918:在SELECT \ *定義的含糊柱](http://stackoverflow.com/questions/6233086/ora-00918-column-ambiguously-defined-in-select) – Ben
@Ben不幸的是,由於當時我的特殊要求使這些答案不可取。 – Damntry