select user_id from ( select user_id, if(lead(log_date) over (PARTITION BY user_id ORDER BY log_date) - log_date = 1, 1, 0) as d from ( select user_id, date(log_time) as log_date from register_tb join login_tb using (user_id) where reg_time is not null group by user_id, log_date order by user_id ) t order by user_id ) t1 group by user_id having sum(d) >= 2
那些写连续登陆问题喜欢用表自连接的真的上点心吧……连续三天登陆你的代码或许尚且可以运行,要是让你查个连续三十天登陆的,你联三十次表嘛?写代码别总想着应试教育那一套,用例过了不代表实际工作中能这么干,现实里你那么写是很危险的,三十次自连接,数据库分分钟瘫痪给你看