首页 > 解决方案 > 选择过去 7 天使用的活动和非活动 MySQL

问题描述

我有一张桌子login_history,其中login_timelogout_time反对 auser_id正在存储。我有兴趣使用另一个查询获取过去 7 天内活跃的用户和非活跃user_ids用户的列表。

我正在使用这个查询select user_id from login_history where login_time <= DATE(NOW()) - INTERVAL 7 DAY,它显示user_id 1,2在输出中。我怎样才能在过去 7 天的基础上获得active和用户 ID?inactive

login_history_table

标签: mysql

解决方案


测试MAX(login_time)他们最近是否活跃。

这将返回非活动用户。

SELECT user_id
FROM login_history
GROUP BY user_id
HAVING MAX(login_time) <= DATE(NOW() - INTERVAL 1 WEEK)

要获得活跃用户,您可以简单地DISTINCT在过滤最近登录时间后使用。

SELECT DISTINCT user_id
FROM login_history
WHERE login_time > DATE(NOW() - INTERVAL 1 WEEK)

推荐阅读