"일꾼이 일을 잘하려면 먼저 도구를 갈고 닦아야 한다." - 공자, 『논어』.
첫 장 > 프로그램 작성 > 동일한 테이블의 행을 비교하기 위해 MySQL에서 셀프 조인은 어떻게 작동합니까?

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

2024년 11월 20일에 게시됨
검색:925

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

MySQL 셀프 조인은 어떻게 작동합니까?

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

쿼리 설명

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

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)

시작일이 event1의 해당 행 종료일 다음 날과 일치하는 event2의 행을 찾습니다.

WHERE 절

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

WHERE event1.id=$id

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

SELECT 절

이것은 선택합니다 결합된 행에서 원하는 필드:

SELECT event2.id, event2.startdate, event2.price

It 지정된 이벤트(event1) 이후의 이벤트에 대한 정보가 하루 단위로 포함된 event2 인스턴스에서 ID, 시작 날짜 및 가격을 검색합니다.

시각적 데모

mm_eventlist_dates에 다음과 같은 기록이 있다고 가정해 보세요. 테이블:

event1.idevent1.enddateevent2.idevent2.startdate
12023-03-0122023-03-02
32023-03-0342023-03-04

함께 주어진 쿼리:

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

이는 MySQL 자체 조인을 통해 동일한 테이블 내에서도 지정된 기준에 따라 관련 행을 식별할 수 있는 방법을 보여줍니다.

최신 튜토리얼 더>

부인 성명: 제공된 모든 리소스는 부분적으로 인터넷에서 가져온 것입니다. 귀하의 저작권이나 기타 권리 및 이익이 침해된 경우 자세한 이유를 설명하고 저작권 또는 권리 및 이익에 대한 증거를 제공한 후 이메일([email protected])로 보내주십시오. 최대한 빨리 처리해 드리겠습니다.

Copyright© 2022 湘ICP备2022001581号-3