
* 겪고 있는 문제 상황을 최대한 자세하게 작성해주세요.
* 문제 해결을 위해 어떤 시도를 해보았는지 구체적으로 함께 알려주세요.
예시 (kakaopay로 결제한 유저들의 정보 보기) 에 처음에
일반쿼리로 진행한 것
select u.user_id , u.name , u.email from users u
inner join orders o on u.user_id = o.user_id
where o.payment_method = 'kakaopay';
과 서브쿼리로 진행한 것의 결과값이 다릅니다.
select user_id , name , email from users u
where user_id in (
select o.user_id from orders o
WHERE payment_method = 'kakaopay'
);
첫번째 것은 row 개수가 56개이고
서브쿼리를 쓴것은 ROW 가 51개입니다.
확인해보니 첫번째 코드의 user_id 가 중복이 있는 것으로 확인되었습니다.
그래서 DISTINCT를 걸어주니 동일한 개수가 되었는데요.
select DISTINCT u.user_id , u.name , u.email from users u
inner join orders o on u.user_id = o.user_id
where o.payment_method = 'kakaopay';
이게 맞는 것인지요? user_id가 중복으로 보이는 이유가 무엇인지요?
