我想在mysql中創建一個表,這個表有3列user_id,activity - 在線或離線 - 和時間戳, 現在我想讓表顯示所有的user_id以及最近的狀態。目前正在使用mysql查詢最近的記錄
SELECT DISTINCT user_id,activity FROM activity ORDER BY timestamp DESC
語句顯示用戶上次在線和離線時哪個不是我想要的。
我想在mysql中創建一個表,這個表有3列user_id,activity - 在線或離線 - 和時間戳, 現在我想讓表顯示所有的user_id以及最近的狀態。目前正在使用mysql查詢最近的記錄
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
如果OP晚於在線,OP希望離線記錄 – jalynn2
我收到此錯誤'on子句'中的未知列'a.userId' – user1712552
@ user1712552對於錯字感到抱歉......但很容易糾正......只需更換它與'user_id'。我正在更正它 – Barranka
AH感謝它的工作! – user1712552