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 子句
这指定了哪些表join:
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
它检索 ID、开始日期、 event2 实例中的价格,其中包含有关指定事件 (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 |
使用给定的查询:
这演示了 MySQL 自联接如何允许您根据指定条件识别相关行,即使在同一个表中也是如此。
以上是MySQL 中的自连接如何工作来比较同一个表中的行?的详细内容。更多信息请关注PHP中文网其他相关文章!