답변은 아니지만,
특별한 경우가 아니면 잘 쓰지 않는 것 같습니다.
쓰지 않고도 원하는 정렬을 대부분 구할 수 있으며
오더절에 질의를 쓰면 타 DBMS로 변경 되었을 때 실행이 되지 않을 수 있습니다.
주의는 해당 질의 결과가 1건 이상 출력이 되면 오류가 나기 때문에
1건 이상이 출력 되어야 한다면 본(Body) 질의 결과와 1:1로 매핑 되어야 합니다.
SELECT USER_ID, NAME, ADDR FROM MEMBER
ORDER BY (SELECT MAX(USER_ID) FROM MEMBER_DETAIL WHERE USER_ID = MEMBER.USER_ID)
SELECT USER_ID, NAME, ADDR FROM MEMBER
ORDER BY (SELECT 1 FROM DUAL UNION ALL SELECT 2 FROM DUAL)
>> ERROR : 단일 행 하위 질의에 2개 이상의 행이 리턴 되었습니다.
감사합니다
제가 생초보라 조금 이해가 힘든 부분이 있는데,
'주의는 해당 질의 결과가 1건 이상 출력이 되면 오류가 나기 때문에
1건 이상이 출력 되어야 한다면 본(Body) 질의 결과와 1:1로 매핑 되어야 합니다.'
라고 말씀하신 부분을 제가 이해하기로는...
order by에 서브쿼리를 사용한다면 정렬해서 모두 표시해주는 것은 불가능하고 max나 min 처럼 정렬 후 하나의 값만 나타낼 수 있다는 건가요?
잘못이해한 거라면 조금만 풀어서 설명부탁드립니다
에고 로그인을 안해서 손님으로 댓글이 달렸네요 죄송합니다
그리고 본 질의 결과와 1:1로 매핑되어야 한다는 부분도 조금 헷갈립니다
메인쿼리와 1:1로 조인되거나 관계를 가져야 한다는 말씀이신가요?
작성해주신 쿼리내용 차분히 살펴보니 정렬은 가능한데 서브쿼리를 통한 조건을 딱 하나만 지정해줘야 한다는 것 같네요 제대로 이해한 것이 맞나요?
'SELECT USER_ID, NAME, ADDR FROM MEMBER
ORDER BY (SELECT MAX(USER_ID) FROM MEMBER_DETAIL WHERE USER_ID = MEMBER.USER_ID)'
을 user_id 컬럼을 가장 큰 값을 기준으로 정렬해라 로 이해했습니다