我有一个体育赛事表。
现在我要选择即将发生的事件加上从第一个事件开始一周内发生的所有事件。
有人能帮我解决这个问题吗?我的表看起来像这样(示例):
+--------+-----------+----------------------+
| ID | Name | Date |
+--------+-----------+----------------------+
| 1 | u16 girls | 2015-07-08 20:00:00 |
| 2 | u18 boys | 2015-05-26 18:45:00 |
| 3 | male 1 | 2015-05-31 20:45:00 |
| 4 | female 2 | 2015-06-02 21:00:00 |
| 5 | u14 mixed | 2015-07-12 16:00:00 |
+--------+-----------+-------------+--------+
现在,例如今天是5月15日,查询应该返回id为2,3,4的行,因为其他两个事件比事件号2晚一周以上
如果我理解正确,您可以获得下一个事件的日期,然后使用日期逻辑来获取此后一周内的所有内容:
select e.*
from events e cross join
(select min(date) as nextdate from events where date >= now()) em
where e.date between em.nextdate and date_add(em.nextdate, interval 1 week);