행 제한 절을 사용하여 Oracle 쿼리에서 열 복제
Oracle 12c 이후 SQL 표준 행 제한 조항을 다음과 같이 사용할 수 있게 되었습니다.
SELECT * FROM t FETCH FIRST 10 ROWS ONLY
Oracle 12.1에서는 테이블을 결합할 때 매우 성가신 제한이 있었습니다.동일한 이름의 두 열을 사용할 수 없습니다.SELECT
행 제한 절을 사용하는 경우 절입니다.예: Oracle 12.1에서 ORA-00918이 향상되었습니다.
SELECT t.id, u.id FROM t, u FETCH FIRST 10 ROWS ONLY
이 제한 사항은 모든 버전 12.1, 12.2, 18.0에 대한 설명서에 나와 있습니다.
해결 방법은 분명히 열에 별칭을 붙이는 것입니다.
SELECT t.id AS t_id, u.id AS u_id FROM t, u FETCH FIRST 10 ROWS ONLY
또는 다음을 사용하여 "클래식" 페이지로 이동합니다.ROWNUM
또는 창 기능.
그런데 이상하게도, 원래 질문은 애매모호합니다.ID
열은 Oracle 12.2 이상에서 정상적으로 실행됩니다.문서 버그입니까, 아니면 문서화되지 않은 기능입니까?
이 경우 행 제한 조항을 사용할 때 Oracle이 내부적으로 다음을 호출하는 것처럼 보입니다.ROW_NUMBER()
열 이름을 사용하는 함수OVER
절 좋아요ROW_NUMBER OVER(ORDER BY ID)
이것 때문에 당신은 그것을 받고 있습니다.ORA-00918 error
.
당신이 암묵적인 가입을 하고 있다는 것을 알았습니다.명시적으로 가입할 때 문제가 해결되는지 확인하는 것은 흥미로울 것입니다.Oracle이 id=id를 기반으로 조인을 수행하고 있으며 할당한 테이블 별칭을 사용하지 않는지 궁금합니다.
열 별칭으로 문제를 해결할 수도 있습니다.명시적으로 참여해 보십시오. 그러면 Oracle이 테이블 별칭을 사용하여 표시되는 모호성을 해결할 수 있습니다.
언급URL : https://stackoverflow.com/questions/51768880/duplicate-columns-in-oracle-query-using-row-limiting-clause
'itsource' 카테고리의 다른 글
SpringBoot 구성 요소다중 모듈 프로젝트 스캔 문제 (0) | 2023.07.21 |
---|---|
두 데이터 프레임을 비교하고 차이점 파악 (0) | 2023.07.21 |
IPython 노트북에서 코드가 실행되는지 확인하려면 어떻게 해야 합니까? (0) | 2023.07.21 |
매트플로트립에서 X축 레이블을 아래로 이동하지만 X축 눈금은 아래로 이동하지 않습니다. (0) | 2023.07.21 |
오라클 추적 파일에서 교착 상태 오류의 원인 찾기 (0) | 2023.07.21 |