我使用以下sql来显示最近5分钟浏览网站的活跃用户。然后,行显示浏览的页面。但是,如果用户(哈希)在5分钟内浏览了许多页面,则会显示所有页面。
我想要展示的只是每个用户的最后一页。我怎样才能做到这一点? 限制1不起作用,因为我想显示所有活动用户的最后一页。不仅有1个用户。
SELECT behaviour.hash,
behaviour.page
FROM active
inner join behaviour
ON active.hash = behaviour.hash
WHERE active.last_active >= Now() - interval 10 second
AND behaviour.timestamp >= Now() - interval 5 minute
ORDER BY behaviour.timestamp DESC
答案 0 :(得分:0)
我认为这对你正在做的事情有用:
SELECT b.hash, b.page
FROM active a join
behaviour b
ON a.hash = b.hash join
(select b2.hash, max(timestamp) as maxts
from behavior b2
where timestamp >= Now() - interval 5 minute
group by b2.hash
) bh
ON bh.hash = b.hash and bh.maxts = b.timestamp
WHERE a.last_active >= Now() - interval 10 second
ORDER BY b.timestamp DESC ;
它获取子查询中的最大时间戳并将其重新加入。