2017-03-08 76 views
0

我不是oracle專家。我面臨一個非常奇怪的問題,但不知道爲什麼會發生這種情況。 我的查詢是Oracle查詢的奇怪行爲

SELECT hc.id, hc.owner_name, hc.national_id, hc.phone_no, hc.location, hc.status, hc.expiry_status, od.office_title AS issuer, hc.create_date, hc.email, hc.LATTITUDE, hc.LONGITUDE, hc.HASAD_NO, hc.NUMBERATION, hc.BREEDING_TYPE, hc.PROGENY, hc.office_id, hc.issuer_id, hc.expiry_status, hc.status FROM health_cards hc 
        LEFT JOIN office_details od ON od.office_id = hc.issuer_id AND od.lang = :lang 
        WHERE hc.id = :search_data_num OR hc.national_id = :search_data_num or hc.phone_no = :search_data_num OR hc.owner_name LIKE :search_data ORDER BY hc.create_date DESC, hc.id desc OFFSET 0 ROWS FETCH NEXT 50 ROWS ONLY 

當I M運行該查詢I M收到以下錯誤

ORA-00918: column ambiguously defined 
00918. 00000 - "column ambiguously defined" 

但如果我刪除OFFSET 0行FETCH NEXT 50行只能從我的查詢它很好地工作。

我想知道爲什麼這個查詢不適用於偏移量語句。

+0

哪個Oracle版本? – Aleksej

+0

你可以添加表結構嗎? –

回答

1

您有反覆列hc.status.

`select 1 as "A" as "A" from dual` - execute OK; 

`select * from (select 1 as "A" 
        , 2 as "A" 
       from dual);` - ORA-00918: column ambiguously defined 

如果你和偏移,甲骨文或許有類似的功能。

0

您的選擇列表中有兩列hc.expiry_status

問題是我們允許在選擇列表中,但不是在內聯視圖中。當您添加行限制子句時,Oracle轉換查詢並且轉換使用內聯視圖。有一個錯誤,標記爲固定的13687511。 同時,解決方法是不選擇兩次,或別名列。