目前找到了这种方法,但如果需要更多次数的连续相同,就更麻烦了,有没有更好的方法,求大神指教
1、 参考这篇文章,添加新列new_id,这个列的数据是下一条记录的id https://developer.aliyun.com/article/485399
2、再添加新列dif = new_id - id ,只有dif =1 才是连续的
3、 使用groupy by 分组 ,条件 count(1)>n ,获得连续相同数据的id
请看这个: https://blog.csdn.net/YANGYYID/article/details/76551254
select a.user_id,count(b.user_id)
FROM
(select DISTINCT user_id,DATE_FORMAT(create_date,"%Y-%m-%d") as my_date
from order
order by user_id,my_date) as a
left join (select DISTINCT user_id,DATE_FORMAT(create_date,"%Y-%m-%d") as my_date
from order
order by user_id,my_date) as b on b.user_id=a.user_id and b.my_date>=b.my_date and b.my_date<=DATE_FORMAT(DATE_ADD(a.my_date,INTERVAL 5 DAY),'%Y-%m-%d')
group by a.user_id,a.my_date
having count(b.user_id)=5
类似这种形式,建立一个虚拟表,以日期为例,查询所有id和日期对应的数据,再join一次,条件是大于等于原日期,小于等于原日期加N日,如果查出来的条数等于N,证明有连续N天符合条件。