0
我們爲網站上的各種事物設置了時間戳。我正在尋找一種方法來獲取過去20分鐘內「在線」或已激活的用戶。我也試圖通過跨多個表中多列的最新時間戳的交集來排序它們。用於在表中查找最新活動的SQL查詢
SELECT user.userID, user.username, GREATEST(
(SELECT MAX(notifications.noteTime) FROM notifications WHERE notifications.creatorID = user.userID),
challengesRead.lastRead,
notificationsRead.lastRead) AS realtime
FROM user
LEFT JOIN challengesRead ON challengesRead.userID = user.userID
LEFT JOIN notificationsRead ON notificationsRead.userID = user.userID
LEFT JOIN notifications ON notifications.creatorID = user.userID
LEFT JOIN challenges ON challenges.userID = user.userID
WHERE timestampdiff(minute, realtime, now()) < 20
GROUP BY user.userID
ORDER BY realtime DESC
我的問題。
1)Timestampdiff似乎不能實時識別?然而,重新計算timestampdiff中的GREATEST()確實有效,但似乎是重複的。
2)哎呀,這隻野獸需要永遠運行,什麼是最佳的優化方式?
3)什麼是更好的方法來做到這一點?
Doh!有意義並解決所有上述問題。謝謝。 –