首頁 >資料庫 >mysql教程 >MySQL 中的自連線如何比較同一個表格中的行?

MySQL 中的自連線如何比較同一個表格中的行?

DDD
DDD原創
2024-11-19 00:22:02786瀏覽

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)

它找到event2 中開始日期與event1 中對應行的結束日期之後的一天。

WHERE 子句

這會根據指定條件過濾結果:

WHERE event1.id=$id

它從event1 中選擇id 與給定變數$id匹配的行。

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中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn