SELECT DISTINCT uuid FROM
(
SELECT t1.uuid,DATE(t1.date) d1 FROM userlogin t1 INNER JOIN userlogin t2 ON t1.uuid=t2.uuid AND DATE(t1.date) + 1 = DATE(t2.date)
UNION ALL
SELECT t1.uuid,DATE(t1.date) d1 FROM userlogin t1 INNER JOIN userlogin t2 ON t1.uuid=t2.uuid AND DATE(t1.date) + 2 = DATE(t2.date)
UNION ALL
SELECT t1.uuid,DATE(t1.date) d1 FROM userlogin t1 INNER JOIN userlogin t2 ON t1.uuid=t2.uuid AND DATE(t1.date) + 3 = DATE(t2.date)
UNION ALL
SELECT t1.uuid,DATE(t1.date) d1 FROM userlogin t1 INNER JOIN userlogin t2 ON t1.uuid=t2.uuid AND DATE(t1.date) + 4 = DATE(t2.date)
)T
GROUP BY uuid,CONCAT(uuid,DATE(d1)) HAVING COUNT(1)=4;
首先order by uuid asc, date asc;然后通过辅助参数计算连续日期的次数,如果用户id相同,日期连续,计数器加1,否则归0;最后在where里面判断计数器>=5就可以了。可以参考我leetcode的题解:https://leetcode-cn.com/problems/human-traffic-of-stadium/solution/yong-liang-ge-fu-zhu-ji-shu-qi-xun-zhao-idfan-wei-/ 和 https://leetcode-cn.com/problems/department-top-three-salaries/solution/zeng-jia-pai-ming-fu-zhu-can-shu-by-evan-148/