场景案例:获取连续签到X天用户列表

场景:
mysql

有时候咱们在网站中要 假模假样的 作一些签到功能。让用户能够每天来点一次网站,以增长咱们网站的活跃率。sql


那么其中一个功能是:ide

统计出连续签到X天的用户。而后对他们进行排行或者假模假样的奖励函数


计算 相邻两行的 日期是否 相差一天就能够。网站


mysql的函数 datediff(date1,date2)it


返回两个日期之间的天数 注意是 date1-date2class



select user_name,sign_date,IF(@pre=user_name and DATEDIFF(sign_date,@pre_date)=1,@rownum:=@rownum+1,@rownum:=1),date

 

@pre:=user_name,@pre_date:=sign_dateselect

 from (统计

select user_name,sign_date from user_sign

GROUP BY user_name,sign_date ORDER BY user_name   ,sign_date  ) a ,(select @pre:='',@rownum:=0,@pre_date:='' ) b