了解 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:
- 此查询使用 JOIN 关键字组合来自两个相同表 mm_eventlist_dates 的数据。
- 它创建两个虚拟表 event1 和 event2,代表同一个表两次。
WHERE:
- 此子句根据 event1 的 ID 从 event1 中选择特定记录。假设这条记录代表 Event1。
ON:
- 此子句定义两个虚拟表之间的关系。
- 它将事件 2 的开始日期与事件 1 的结束日期进行比较,偏移一天。
- 此条件确保事件 2 的开始日期应恰好是事件 1 结束后的一天。
SELECT:
- 此子句指定要从查询中检索的字段。
- 在本例中,它选择 ID、开始日期,以及 event2 的价格。
查询如何工作:
- 查询首先识别 event1 中与传递的指定 ID 相匹配的记录$id 变量。
- 对于 event1 中标识的记录,它计算结束日期一天后的日期。
- 然后将计算出的日期与中记录的开始日期进行比较event2。
- 由于 event1 和 event2 是相同的表,因此 event2 中唯一匹配的记录的开始日期将是 event1 结束后一天。
- event2 中的此匹配记录代表以下事件(Event2) 在 Event1 一天后发生。
- 最后,查询检索 Event2 的 ID、开始日期和价格,并将它们显示为结果。
以上是MySQL 自连接如何帮助查找一天又一天发生的事件?的详细内容。更多信息请关注PHP中文网其他相关文章!