如何修复此sql只显示最后一行而不是所有满足查询条件的行?

时间:2015-05-25 12:32:36

标签: php mysql sql

我使用以下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 

1 个答案:

答案 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 ;

它获取子查询中的最大时间戳并将其重新加入。