任何人都可以给我一个想法或提示如何存储登录名(用户 ID、时间戳)数据库表(MySQL)连续 中检X 天? # E1 E7 }9 V2 E: R: X+ V1 B2 nStackoverflow 做到了(如 Enthusiast 这样的徽章-如果你连续登录 大约30天......)。你必须使用什么功能或想法? 4 K9 {2 o! x2 N像SELECT 1 FROM login_dates WHERE ...什么? 0 y9 u4 e, x3 O7 U " m' @: K L) ~: B: T* ?( j$ L 解决方案: ' S) q P% m6 R t& \
您可以使用移位自外连接和变量来完成此操作。请参考此解决方案: ) S4 s$ N: q5 r6 F9 G7 I: T2 X& n+ s
SELECT IF(COUNT(1) > 0,1,0) AS has_consecFROM( SELECT * FROM ( SELECT IF(b.login_date IS NULL,@val:=@val 1,@val) AS consec_set FROM tbl a CROSS JOIN (SELECT @val:=0) var_init LEFT JOIN tbl b ON a.user_id = b.user_id AND a.login_date = b.login_date INTERVAL 1 DAY WHERE a.user_id = 1 ) a GROUP BY a.consec_set HAVING COUNT(1) >= 30) a / I- [" G% E) s0 A