작성자 없음
작성자 정보가 삭제된 글입니다.
작성
·
15
·
수정됨
0
[질문 템플릿]
1. 강의 내용과 관련된 질문인가요? 예
2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? 예
3. 질문 잘하기 메뉴얼을 읽어보셨나요? 예
[질문 내용]
안녕하세요 영한님, 강의 정말 재밌게 봤습니다!
다름이 아니라 문제와 풀이 3번 문제 "RIGHT JOIN으로 주문 없는 고객 찾기"를 보면 '가입은 했지만 주문 기록이 없는 고객의 이름과 이메일을 조회하는 SQL을 작성하라고 되어있는데, DISTINCT
를 붙여 중복을 제거한 행을 조회하는게 맞는게 아닌가 싶어 질문 드립니다!!
-- 기존 답안
SELECT
u.name, u.email
FROM
orders o
RIGHT JOIN
users u on o.user_id = u.user_id
WHERE o.order_id IS NULL;
-- 제가 생각한 쿼리문
SELECT
DISTINCT u.name, u.email
FROM
orders o
RIGHT JOIN
users u on o.user_id = u.user_id
WHERE o.order_id IS NULL;
답변 2
0
다시 생각해보니 orders-users
right
조인된 것들 중 order_id
가 null인 것만 걸러지니까
조회되는 고객 정보는 굳이 distinct를 쓰지 않아도 하나씩만 나오겠더라구요.
질문을 삭제하려고 했는데 삭제가 안 되네요ㅎㅎ
0
안녕하세요, 인프런 AI 인턴입니다.
MY님이 제기하신 질문을 잘 검토해보았습니다. 질문의 핵심은 ‘가입은 했지만 주문 기록이 없는 고객의 이름과 이메일을 조회하는 경우에 DISTINCT
사용이 필요한가’에 관한 것입니다.
DISTINCT
사용 여부목적: 가입은 했지만 주문 기록이 없는 고객을 조회하고자 할 때, RIGHT JOIN
을 통해 사용되지 않은 고객의 레코드를 조회하게 됩니다. 따라서 orders 테이블
의 order_id가 null인 경우만을 검색하는 것을 목표로 합니다.
DISTINCT
필요성: 일반적으로 RIGHT JOIN을 사용한 쿼리에서 고객이 중복될 가능성은 낮습니다, 기본적으로 각 고객(user_id)이 orders 테이블과의 연결에서 고유하기 때문입니다. 따라서 쿼리 결과에서 중복된 행이 나타날 가능성은 적습니다.
하지만 만약 여러 테이블에서 동일한 사용자가 여러 번 나타날 수 있는 복잡한 조인 쿼리를 수행한다면, DISTINCT
를 사용하여 중복된 결과를 제거하는 것이 필요한 경우도 있습니다. 이번 케이스에서는 RIGHT JOIN
과 WHERE o.order_id IS NULL
조건이 고객별로 한 번만 해당되지 않으므로 DISTINCT
의 필요성은 상대적으로 낮습니다.
DISTINCT
를 추가하는 것은쿼리 문법상 문제는 없지만, 지금의 쿼리 구조에서는 큰 차이를 만들지 않을 가능성이 높습니다.
저는 질문자님의 이해를 돕고자 지식공유자님의 기존 답변을 참고하여 유사한 답변 링크를 추천해드리고 있습니다.
현재 베타 기능으로 답변이 만족스럽지 않을 수 있는 점 양해 부탁드립니다. 🙏 추가적으로 궁금한 점이 있으시면, 이어서 질문해 주세요. 곧 지식공유자께서 답변해 주실 것입니다.