인프런 커뮤니티 질문&답변

개발너구리님의 프로필 이미지
개발너구리

작성한 질문수

8시간 완성 SQLD(2과목)

다중행 서브쿼리 ALL, ANY 연산자 실습

다중행쿼리 ALL ANY 제외 질문

해결된 질문

작성

·

33

·

수정됨

0

다중행쿼리 SQLD에서

WHERE sal > ANY(SELECT min(sal) 
             FROM emp 
             WHERE job='SALESMAN');
WHERE sal > (SELECT min(sal) 
             FROM emp 
             WHERE job='SALESMAN');

이 두 개의 구문을 실행하였을 때

값은 같은데 정렬이 되고 안되고 차이가 있는것 같은데요

그러면 디폴트 값이 ANY, ALL사용시

  1. ASC로 잡혀있는게 맞을까요.

 

  1. ASC로 잡혀있는게 맞다면

이 구문에 대해서 ORDER BY절을 ASC가 필요한 경우

굳이 적지 않아도 되나요?

WHERE sal > ANY(SELECT min(sal) 
             FROM emp 
             WHERE job='SALESMAN');

 

3. ASC로 잡혀 있는경우) 가독성 고려..?

위와 더불어 아니면 가독성을 위해서 ORDER BY ASC를 기입하는게 더 좋나요.

WHERE sal > ANY(SELECT min(sal) 
             FROM emp 
             WHERE job='SALESMAN');
ORDER BY DESC;

답변 1

0

땃지님의 프로필 이미지
땃지
지식공유자

개발너구리님, 안녕하세요.

 

ANY나 ALL을 이용했을 때 실행 계획상 쿼리를 처리할 때 내부에서 비교 연산을 수행하면서 데이터가 정렬 될 수 있습니다. 늘 그런 것은 아니라서 정렬을 보장하는 것은 아닙니다.

 

따라서 정렬이 필요한 경우 ORDER BY 절을 이용해 어떤식으로 데이터를 정렬할지 명시해야 합니다.

 

감사합니다.

 

 

 

개발너구리님의 프로필 이미지
개발너구리

작성한 질문수

질문하기