场景:
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