整理出第一个属性

时间:2010-09-27 16:08:54

标签: sql mysql

我是MySql的初学者。但我正在创建一个日历应用程序,在那里我有一个未来事件帖子的数据库。事件帖子具有以下属性:id,title,startTime,endTime,startDate,repeat。最后一个属性重复的地方,如果事件帖子应每周重复一次,每月一次,或者不以startDate开始。

我想要一个sql-query来整理从今天开始只有三个第一个日期在数据库中出现的事件帖子?例如,如果我们在数据库中有14,16,19日期的事件帖子,那么这些日期是与相应事件帖子一起显示的唯一日期。在三个第一次约会之后的其他日子不得出示。

请帮助我

1 个答案:

答案 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)