programing

DISTINCT 키워드를 사용하면 SELECTED 식이 아닌 에러가 발생합니다.

magicmemo 2023. 3. 12. 10:40
반응형

DISTINCT 키워드를 사용하면 SELECTED 식이 아닌 에러가 발생합니다.

다음과 같은 질문이 있습니다.

SELECT DISTINCT share.rooms
FROM Shares share
  left join share.rooms.buildingAdditions.buildings.buildingInfoses as bi
... //where clause omitted
ORDER BY share.rooms.floors.floorOrder, share.rooms.roomNumber,
         share.rooms.firstEffectiveAt, share.shareNumber, share.sharePercent

그 결과 다음과 같은 예외가 발생합니다.

Caused by: org.hibernate.exception.SQLGrammarException: ORA-01791: not a SELECTed expression

DISTINCT 키워드를 삭제하면 쿼리는 문제없이 실행됩니다.Order by clause를 삭제하면 쿼리는 문제없이 실행됩니다.유감스럽게도 중복되지 않으면 주문한 결과 세트를 받을 수 없을 것 같습니다.

계산되지 않는 열을 사용하여 결과를 정렬하려고 합니다.이 문제는 문제가 되지 않을 겁니다.DISTINCT여기서, 하지만 당신의 쿼리는 기본적으로 다음 방법으로만 그룹화되기 때문입니다.share.rooms열, 같은 열에 대해 여러 개의 값을 가질 수 있는 다른 열과 함께 결과 세트를 정렬하려면 어떻게 해야 합니까?share.rooms하나?

이 게시물은 조금 오래되었지만, 이 오류를 피하기 위해 제가 한 일 중 하나는 쿼리를 랩하고 주문을 이렇게 외부에 적용하는 것입니다.

SELECT COL
FROM (
   SELECT DISTINCT COL, ORDER_BY_COL
   FROM TABLE
   // ADD JOINS, WHERE CLAUSES, ETC.
) 
ORDER BY ORDER_BY_COL;

이것이 도움이 되기를 바랍니다:)

사용시DISTINCT를 가진 쿼리에서ORDER BY에서 사용한 모든 열을 선택해야 합니다.ORDER BY스테이트먼트:

SELECT DISTINCT share.rooms.floors.floorOrder, share.rooms.roomNumber,
         share.rooms.firstEffectiveAt, share.shareNumber, share.sharePercent
...
ORDER BY share.rooms.floors.floorOrder, share.rooms.roomNumber,
         share.rooms.firstEffectiveAt, share.shareNumber, share.sharePercent

언급URL : https://stackoverflow.com/questions/15275447/using-the-distinct-keyword-causes-this-error-not-a-selected-expression

반응형