每个记录只获取mysql中的最新数据

时间:2014-09-15 05:51:47

标签: php mysql sql

我有一个像这样的表架构

  1. 用户(int)的
  2. 创建(日期时间)
  3. 元数据
  4. 并且表中有多个条目用于单个用户ID。

    我想只为每个创建了最大或最新用户的用户提取这些数据。

    我尝试了很多查询,但它不起作用。他们正在获取最早的数据。 我尝试了这些查询

      select user, metadata, max(created) 
      from event_visitor 
      group by user 
      order by max(created)
    

      SELECT ev1.user, ev1.metadata, ev1.created 
      from event_visitor ev1 
           inner join event_visitor ev2 
           on ev1.user=ev2.user 
      where ev1.created > ev2.created 
      group by user
    

    请帮助

2 个答案:

答案 0 :(得分:0)

您可以使用not exists仅为每个用户选择最新行,方法是验证后来的'给定用户的记录不存在

select user, metadata, created
from event_visitor ev
where not exists (
    select 1 from event_visitor ev2
    where ev2.user = ev.user
    and ev2.created > ev.created
)

答案 1 :(得分:0)

这个应该适合你:

SELECT * FROM 
   (
         SELECT * FROM event_visitor 
         ORDER BY created DESC
   ) u 
GROUP By user

SQLFiddle