• 카테고리

    질문 & 답변
  • 세부 분야

    데이터베이스

  • 해결 여부

    미해결

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

23.04.18 23:52 작성 조회수 295

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

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