2張表(產品表 和產品宣傳圖表),根據產品找到產品的主宣傳圖。
SQL:
SELECT P .*, ( SELECT INNER_TAB.usepic FROM (
SELECT SAP.attpic_name usepic,ROWNUM RN_
FROM T_CLSH_ATTPIC SAP
WHERE SAP.prod_id = P .prod_id
AND SAP.is_use = '1'
AND SAP.is_del = '0'
ORDER BY
SAP.ATTPIC_ID DESC
) INNER_TAB
WHERE
INNER_TAB.RN_ = 1
) usepic
FROM
T_CLSH_PROD P
在本地環境 windows oracle 10G下能夠正常運行。
放到 linux oracle11G 執行報錯.
錯誤:[Err] ORA-00904: "P"."PROD_ID": invalid identifier。
百度了下有人說是子查詢帶上主表的別名層數太深導致,還是說oracle11g不支持,
不知道這個問題該如何解決,要做配置還是只能通過更改sql(專案涉及這樣的寫法還有很多處)
請教各位!
uj5u.com熱心網友回復:
不支持雙層嵌套關聯,想其他辦法吧uj5u.com熱心網友回復:
我也剛看了oracle官方檔案,馬的,果然是11G不支持雙層嵌套子查詢。uj5u.com熱心網友回復:
這種寫法不支持,可以的話你可以在子查詢中再放一個T_CLSH_PROD 表,或者換其他方式uj5u.com熱心網友回復:
我用max來代替rownum=1 這種情況,減少一層子查詢SELECT P .*, (SELECT max(SAP.attpic_name) usepic
FROM T_CLSH_ATTPIC SAP
WHERE SAP.prod_id = P .prod_id
AND SAP.is_use = '1'
AND SAP.is_del = '0') usepic
FROM
T_CLSH_PROD P
uj5u.com熱心網友回復:
對資料庫有額外開銷, 查詢效率低, 不推薦
uj5u.com熱心網友回復:
可以用臨時表吧uj5u.com熱心網友回復:
我嘗試了一下,為什么我的可以跑?也是 hp-ux的服務器,11g的版本,兩層select可以沒問題uj5u.com熱心網友回復:
我的三層都支持,也是11g啊,不知道為啥SELECT P.*,
(select *
from (SELECT INNER_TAB.created
FROM (SELECT tt.created, ROWNUM RN_ FROM lhb.test1 tt) INNER_TAB
WHERE INNER_TAB.RN_ = 1)
where created > sysdate - 5) usepic
FROM lhb.test P
uj5u.com熱心網友回復:
你這個和樓主的情況不一樣,他的是欄位上面的嵌套子查詢,你的是整個表
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/106207.html
標籤:開發
上一篇:多表關聯查詢
