> 데이터 베이스 > MySQL 튜토리얼 > 동일한 테이블의 행을 비교하기 위해 MySQL에서 셀프 조인은 어떻게 작동합니까?

동일한 테이블의 행을 비교하기 위해 MySQL에서 셀프 조인은 어떻게 작동합니까?

DDD
풀어 주다: 2024-11-19 00:22:02
원래의
795명이 탐색했습니다.

How do self-joins work in MySQL to compare rows from the same table?

MySQL 셀프 조인은 어떻게 작동하나요?

MySQL의 셀프 조인에는 동일한 테이블의 두 인스턴스를 조인하는 작업이 포함됩니다. 다른 별칭. 특정 기준에 따라 동일한 테이블의 행을 비교할 수 있습니다.

The Query explain

주어진 쿼리를 분석해 보겠습니다.

SELECT event2.id, event2.startdate, event2.price
FROM mm_eventlist_dates event1
JOIN mm_eventlist_dates event2 
ON event2.startdate = date_add(event1.enddate, INTERVAL 1 DAY)
WHERE event1.id=$id
로그인 후 복사

FROM 절

조인할 테이블을 지정합니다.

FROM mm_eventlist_dates event1
JOIN mm_eventlist_dates event2 
로그인 후 복사

동일한 테이블 mm_eventlist_dates가 두 번 사용되며 event1 및 event2라는 별칭이 지정됩니다.

ON 절

조건에 따라 테이블의 두 인스턴스를 조인합니다.

ON event2.startdate = date_add(event1.enddate, INTERVAL 1 DAY)
로그인 후 복사

event2에서 시작 날짜가 일치하는 행을 찾습니다. event1의 해당 행의 종료일 다음 날.

WHERE 절

지정된 조건에 따라 결과를 필터링합니다.

WHERE event1.id=$id
로그인 후 복사

id가 주어진 변수인 $id와 일치하는 event1의 행을 선택합니다.

SELECT 절

이렇게 하면 결합된 행에서 원하는 필드가 선택됩니다.

SELECT event2.id, event2.startdate, event2.price
로그인 후 복사

event2 인스턴스에서 ID, 시작일, 가격을 검색하는데, 여기에는 지정된 이벤트(event1) 이후의 이벤트에 대한 정보가 하루 단위로 포함되어 있습니다.

시각적 시연

mm_eventlist_dates 테이블에 다음 레코드가 있다고 가정해 보세요.

event1.id event1.enddate event2.id event2.startdate
1 2023-03-01 2 2023-03-02
3 2023-03-03 4 2023-03-04

주어진 쿼리 사용:

  • ID가 $id와 동일한 event1을 검색합니다. (예: 1).
  • 종료 날짜에 하루를 더한 날짜(2023-03-02)를 계산합니다.
  • event2에서 시작 날짜(2023-03-02)가 동일한 행을 검색합니다. ).
  • 일치하는 event2 행의 ID, 시작 날짜 및 가격을 반환합니다.

이는 MySQL 자체 조인을 사용하여 지정된 항목을 기반으로 관련 행을 식별하는 방법을 보여줍니다. 동일한 테이블 내에서도 기준이 적용됩니다.

위 내용은 동일한 테이블의 행을 비교하기 위해 MySQL에서 셀프 조인은 어떻게 작동합니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

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