select user_id from( select user_id, max(rk)-min(rk)+1 连续登录 from( select user_id, log_time, row_number() over(partition by user_id order by log_time) rk, date_sub(date_format(log_time,'%Y-%m-%d'), interval row_number() over(partition by user_id order by log_time) day) 初始日期 from login_tb ) as t1 group by 初始日期,user_id ) as t2 where user_id in( select distinct user_id from register_tb ) group by user_id having max(连续登录) >= 3 order by user_id