我是MySql的初学者。但我正在创建一个日历应用程序,在那里我有一个未来事件帖子的数据库。事件帖子具有以下属性:id,title,startTime,endTime,startDate,repeat。最后一个属性重复的地方,如果事件帖子应每周重复一次,每月一次,或者不以startDate开始。
我想要一个sql-query来整理从今天开始只有三个第一个日期在数据库中出现的事件帖子?例如,如果我们在数据库中有14,16,19日期的事件帖子,那么这些日期是与相应事件帖子一起显示的唯一日期。在三个第一次约会之后的其他日子不得出示。
请帮助我
答案 0 :(得分:1)
要从今天开始接收接下来三个非连续日的事件,请使用:
SELECT x.*
FROM (SELECT ep.*,
CASE
WHEN DATE(@dt) = DATE(x.dt) THEN @rownum
ELSE @rownum := @rownum + 1
END AS rank,
FROM EVENT_POST ep
JOIN (SELECT @rowrum := 0, @dt := NULL) r
WHERE ep.startdate >= CURRENT_DATE
ORDER BY t.startdate, t.starttime) x
WHERE x.rank <= 3
要获取接下来三个连续日的事件,请从今天开始,使用DATE_ADD function:
SELECT ep.*
FROM EVENT_POST ep
WHERE ep.startdate BETWEEN DATE(NOW)
AND DATE_ADD(DATE(NOW), INTERVAL 3 DAY)