> 데이터 베이스 > MySQL 튜토리얼 > 관련 데이터를 검색할 때 WHERE 절이 MySQL LEFT JOIN에 어떤 영향을 미치나요?

관련 데이터를 검색할 때 WHERE 절이 MySQL LEFT JOIN에 어떤 영향을 미치나요?

Linda Hamilton
풀어 주다: 2024-12-18 22:46:14
원래의
179명이 탐색했습니다.

How Does the WHERE Clause Affect MySQL LEFT JOINs When Retrieving Related Data?

WHERE 절과 함께 MySQL JOIN을 사용하여 관련 데이터 검색

MySQL에서 테이블 조인을 사용하면 여러 테이블의 데이터를 단일 테이블로 결합할 수 있습니다. 결과 집합. 그러나 LEFT JOIN과 같은 외부 조인에 WHERE 절을 추가하면 조인 동작이 변경될 수 있습니다.

문제:

다음과 같은 시나리오를 고려해보세요. "categories"와 "user_category_subscriptions"라는 두 개의 테이블이 있고 특정 사용자가 구독하는 카테고리를 포함하여 모든 카테고리를 검색하려고 합니다. 특정 "user_id"를 사용합니다. 아래의 초기 쿼리는 두 테이블 사이에서 LEFT JOIN을 수행합니다.

SELECT *
FROM categories
LEFT JOIN user_category_subscriptions 
     ON user_category_subscriptions.category_id = categories.category_id
로그인 후 복사

도전 과제:

원래 목표는 내부 조인(또는 동등 조인)을 구현하는 것이었습니다. ) WHERE 절을 사용합니다. 그러나 위 쿼리는 외부 조인, 특히 왼쪽 외부 조인으로, "user_category_subscriptions" 테이블에 해당 값이 없더라도 행이 반환되는 것을 막지 않습니다.

해결책:

원하는 결과를 얻으려면 WHERE 절이 아닌 JOIN 문 자체에 WHERE 절을 통합해야 합니다. 절:

SELECT *
FROM categories
LEFT JOIN user_category_subscriptions ON 
    user_category_subscriptions.category_id = categories.category_id
    AND user_category_subscriptions.user_id = 1
로그인 후 복사

왼쪽 조인에서 WHERE 절은 조인 작업 이후 적용되는 필터 역할을 합니다. JOIN 문에 조건을 포함하면 결과에 포함할 행에 대해 충족해야 하는 조건을 효과적으로 지정하게 됩니다. 이렇게 하면 "user_id"가 1인 행만 조인되어 반환됩니다.

위 내용은 관련 데이터를 검색할 때 WHERE 절이 MySQL LEFT JOIN에 어떤 영향을 미치나요?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
저자별 최신 기사
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿