>데이터 베이스 >MySQL 튜토리얼 >MySQL 쿼리에서 동일한 테이블을 두 번 조인하려면 어떻게 해야 합니까?

MySQL 쿼리에서 동일한 테이블을 두 번 조인하려면 어떻게 해야 합니까?

DDD
DDD원래의
2024-12-18 09:50:12747검색

How Can I Join the Same Table Twice in a MySQL Query?

MySQL에서 동일한 테이블에 두 번 조인

MySQL의 조인 작업을 사용하면 공통 키를 기반으로 여러 테이블의 행을 병합할 수 있습니다. 특정 시나리오에서는 테이블 자체를 두 번 조인해야 할 수도 있습니다. 이 기술은 일반적으로 쿼리 결과에 동일한 테이블의 여러 열을 표시하는 데 사용됩니다.

사용 사례

도메인과 리뷰라는 두 개의 테이블이 있는 데이터베이스를 생각해 보세요. 도메인 테이블에는 도메인 ID(dom_id)와 도메인 이름(dom_url)이 포함되어 있습니다. 리뷰 테이블에는 리뷰와 관련된 "from" 및 "to" 도메인에 대한 도메인 ID가 포함되어 있습니다(rev_dom_from, rev_dom_to).

각 리뷰에 대해 두 도메인 이름을 모두 표시하려면 도메인 테이블을 두 번 조인해야 합니다. .

쿼리 구조

이를 달성하려면 원하는 각 조인에 LEFT JOIN을 사용하세요. 이 예에서는 명확성을 위해 도메인 테이블의 별칭을 toD 및 fromD로 지정합니다.

SELECT toD.dom_url AS ToURL,
       fromD.dom_url AS FromUrl,
       rvw.*
FROM reviews AS rvw
LEFT JOIN domain AS toD
    ON toD.dom_id = rvw.rev_dom_for
LEFT JOIN domain AS fromD
    ON fromD.dom_id = rvw.rev_dom_from;

설명

  • 테이블 선택: 쿼리는 다음에서 행을 선택하여 시작됩니다. 리뷰 테이블, 별칭을 "rvw"로 지정합니다.
  • 첫 번째 LEFT JOIN: 첫 번째 LEFT JOIN은 "ToD.dom_id = rvw.rev_dom_for" 도메인 ID(toD.dom_id = rvw.rev_dom_for)를 기반으로 도메인 테이블(별칭 toD)을 리뷰 테이블에 연결합니다.
  • 두 번째 LEFT JOIN: 두 번째 LEFT JOIN은 도메인 테이블을 두 번째로 가져옵니다(별칭 지정). fromD로) 이를 "From" 도메인 ID(fromD.dom_id = rvw.rev_dom_from)를 기반으로 리뷰 테이블에 연결합니다.
  • SELECT 절: SELECT 절은 쿼리가 toD 별칭의 dom_url 필드를 ToURL로 반환하고 fromD 별칭의 dom_url 필드를 FromUrl로 반환해야 합니다. 또한 결과에는 리뷰 테이블의 모든 열(rvw.*)이 포함됩니다.

위 내용은 MySQL 쿼리에서 동일한 테이블을 두 번 조인하려면 어떻게 해야 합니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.