Oracle ORA-00918 해결: 모호한 열 정의 오류
SELECT *
문을 사용할 때 ORA-00918 오류가 발생하면 답답합니다. 이 오류는 동일한 이름의 열이 결과 집합에 여러 번 나타나고 Oracle이 검색할 열을 결정할 수 없을 때 발생합니다.
다음 SQL 문:
<code class="language-sql">SELECT * FROM (SELECT DISTINCT(coaches.id), people.*, users.*, coaches.* FROM "COACHES" INNER JOIN people ON people.id = coaches.person_id INNER JOIN users ON coaches.person_id = users.person_id LEFT OUTER JOIN organizations_users ON organizations_users.user_id = users.id ) WHERE rownum <= 25</code>
SELECT *
절에 문제가 있습니다.
COACHES.ID
PEOPLE.ID
USERS.ID
이 모호성을 해결하려면 쿼리에서 명명된 열을 명시적으로 선택해야 합니다. 명확성을 높이고 나중에 열을 추가하거나 이름을 바꿀 때 문제를 방지하려면 열 별칭을 사용하는 것이 좋습니다. 예:
<code class="language-sql">SELECT COALESCE(COACHES.ID, PEOPLE.ID, USERS.ID) AS ID, people.*, users.*, coaches.*, organizations_users.* FROM (SELECT DISTINCT(coaches.id), people.*, users.*, coaches.* FROM "COACHES" INNER JOIN people ON people.id = coaches.person_id INNER JOIN users ON coaches.person_id = users.person_id LEFT OUTER JOIN organizations_users ON organizations_users.user_id = users.id ) WHERE rownum <= 25</code>
이 조정을 통해 결과 집합에 ID 열 인스턴스가 하나만 있도록 하여 ORA-00918 오류를 해결하고 데이터 무결성을 보장합니다. COALESCE
이 함수는 NULL 값이 존재할 수 있는 상황을 처리하고 NULL이 아닌 첫 번째 ID 값을 선택하는 데 사용됩니다. 그러나 더 나은 해결책은 모든 필수 열을 명시적으로 지정하고 *
와일드카드 문자를 사용하지 않는 것입니다.
위 내용은 내 SELECT * 쿼리 결과가 ORA-00918: 모호한 열 정의 오류인 이유는 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!