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