我想在 mysql 中创建一个表,该表有 3 列 user_id、活动 - 在线或离线 - 和时间戳,现在我希望该表显示所有 user_id 以及最近的状态。目前使用
SELECT DISTINCT user_id,activity FROM activity ORDER BY timestamp DESC
声明显示用户上次在线和离线的时间,这不是我想要的。
我想在 mysql 中创建一个表,该表有 3 列 user_id、活动 - 在线或离线 - 和时间戳,现在我希望该表显示所有 user_id 以及最近的状态。目前使用
SELECT DISTINCT user_id,activity FROM activity ORDER BY timestamp DESC
声明显示用户上次在线和离线的时间,这不是我想要的。
尝试这个:
select act.*
from activity as act
inner join (
select user_id, max(timestamp) as max_ts
from activity
group by user_id) as a on act.user_id=a.user_Id and act.timestamp=a.max_ts
这将返回每个用户的最新记录。
select user_id, max(timestamp) ts from activity a
inner join
(select user_id, activity, max(timestamp) ts
group by user_id, activity) iam
on iam.user_id =a.user_id and a.ts = iam.ts