我不是甲骨文专家。我遇到了一个非常奇怪的问题,但不知道为什么会这样。 我的问题是
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
当我运行此查询时出现以下错误
ORA-00918: column ambiguously defined
00918. 00000 - "column ambiguously defined"
但是如果我从我的查询中删除OFFSET 0 ROWS FETCH NEXT 50 ROWS就可以完美地运行。
我想知道此查询无法使用偏移语句的原因。
答案 0 :(得分:2)
您重复了专栏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
如果你和偏移,oracle可能会做类似的事情。
答案 1 :(得分:0)
您的选择列表中有两列hc.expiry_status
。
问题是我们在选择列表中允许这个,但不在内联视图中。添加行限制子句时,Oracle会转换查询,转换将使用内联视图。有一个错误,13687511被标记为已修复。 同时,解决方法是要么不选择它两次,要么对列进行别名。