열이 c1, c2, c3 및 c4 인 테이블이 있습니다. 나는 c1과 c2가 같은 레코드 중에서 max (c3) 레코드를 검색해야하므로이 방법으로이 레코드를 작성한다.동일한 열 값을 공유하는 레코드 그룹 중에서 "최대"레코드를 선택하십시오.
select *
from XXX a
where not exists (
select 1
from XXX b
where a.c1 = b.c1
and a.c2 = b.c2
and a.c3 > b.c3
)
하지만 내 수석은 쿼리가 전체 테이블을 두 번 스캔하므로이 방법이 효율적이지 않다고 말했습니다. 위의 시나리오를 처리하기위한 더 나은 접근 방법은 무엇입니까?
비고 : Oracle 11g를 사용하고 있습니다.
샘플 입력 : c1 c2 c3 c4 1 1 1 a 1 1 2 b 1 1 3 c 2 1 1 d 2 1 2 e
결과 : c1 c2 c3 c4 1 1 3 c 2 1 2 e
C2 맞죠? – TechDo
샘플 입력 및 출력을 제공하면 질문을 명확히하는 데 도움이 될 수 있습니다. – hkutluay
테이블에서 자체 조인을 사용하는 이유를 명확히 할 수 있습니까? 일부 결과물을 통해 질문을 명확하게 설명해 주시겠습니까? – user1658435