일부 사용자가 만든 SQL을 실행하고 결과를 표시해야합니다. 예를 들어 SQL이 될 수 : 그대로열은 rownum을 사용하여 하위 쿼리에서 모호하게 정의되었습니다.
SELECT t1.*, t2.* FROM table1 t1, table2 t2, where table1.id = table2.id
이 SQL은 잘 작동하지만 내가 수동으로 페이지 매김을 추가하고 ROWNUM을 표시해야하므로 SQL은 다음과 같이 끝납니다. 표 1 및 표 2 모두 동일한 이름 ("ID")와 필드를 포함하기 때문에 "열 애매하게 정의 ORA-00918"
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
이 예외가 발생.
이 문제를 방지하는 가장 좋은 방법은 무엇입니까?
감사합니다.
- 결국
UPDATE, 우리는 추한 방법을 가서 그것들을 실행하기 전에 들어오는 각각의 SQL 구문을 분석했다. 기본적으로 별표를 사용하여 추가해야 할 필드를 확인하고 모든 필드를 고유 ID로 별칭을 지정했습니다. 이로 인해 성능 저하가 초래되었지만 고객이 요구 사항을 충족하는 유일한 옵션이라는 것을 고객이 이해했습니다.
나는 Lex 답을 우리가 작업을 끝내는 해결책으로 표시 할 것이다.
가능 중복 [ORA-00918 : 모호 SELECT \ *에 정의 된 항목 (http://stackoverflow.com/questions/6233086/ora-00918-column-ambiguously-defined-in-select) – Ben
@Ben 불행히도, 특별한 요구 사항이 없었기 때문에 나는 그 대답을 그 당시에는 바람직하지 않게 만들었 기 때문에. – Damntry