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

최윤정님의 프로필 이미지
최윤정

작성한 질문수

데이터 분석 SQL Fundamentals

Where절 서브 쿼리의 이해 - 02

서브쿼리: 고객이 가장 최근에 주문한 주문 정보 추출 관련

작성

·

355

0

안녕하세요, 선생님.

하루에 한번은 질문을 드리는거 같은데 자세하게 답변주셔서 항상 감사드립니다.

 

-- 고객이 가장 최근에 주문한 주문 정보 추출

를 아래와 같이 풀어도 결과값은 같더라구요.

select * from nw.orders a 
where order_date in (select max(b.order_date) from nw.orders b where b.customer_id =a.customer_id );

(아래는 예제 코드)

select * from nw.orders
where (customer_id, order_date) in (select customer_id, max(order_date) from nw.orders group by customer_id);

where...in 은 비상관쿼리의 다중행,
where existx (...)은 상관쿼리의 다중행
반환에 사용된다는 것을 배웠기 때문에 저렇게 하면 안되는 거 같은데 왜 안될까 궁금합니다.

 

 

답변 1

1

권 철민님의 프로필 이미지
권 철민
지식공유자

안녕하십니까,

질문은 얼마든지 괜찮습니다. 부담 가지지 마십시요 ^^

질문을 제대로 이해했는지 모르겠습니다.

in 연산자는 상관 서브 쿼리, 비상관 서브 쿼리에 다 사용 가능합니다. 뿐만 아니라, 단일행, 다중행 반환 모두 가능합니다. 다만 가능하다면 의미상의 명확화를 위해서 단일행의 경우 = 을 사용해 주면 좋습니다.

원하시는 답변이 아니면 다시 글 부탁드립니다.

 

최윤정님의 프로필 이미지
최윤정

작성한 질문수

질문하기