分组选择第一次出现的字段如何获得最后一个?

Jac*_*ble 4 mysql sql group-by

SELECT user_id, created FROM photo_comments GROUP BY user_id
Run Code Online (Sandbox Code Playgroud)

回报

  user_id  created  
  1        2009-10-20 21:08:22 
  12       2009-10-20 21:45:00 
  16       2009-10-28 20:35:30 
Run Code Online (Sandbox Code Playgroud)

但是,创建用户ID 1的2009-10-20日期是用户ID 1的第一个条目.

如何通过用户ID 1获取最后一个条目?(日期应为2009-11-02)

我试图按照最近的第一个顺序获得每个用户的最后一个条目.

小智 7

这将有效:

SELECT user_id, max(created) FROM photo_comments GROUP BY user_id
Run Code Online (Sandbox Code Playgroud)

  • 在此版本中,您不能将其他字段(如`photo_id`或`comment_id`)添加到查询中,并期望它们能够合理地工作. (2认同)

Ken*_*oom 6

普通的SQL不应该首先允许那种查询.理论上,您只能请求在GROUP BY子句中命名的字段或某个其他字段的聚合函数.以下是构建修改后的查询的方法.(然后你也可以在第一行添加其他字段.)

SELECT user_id, created
FROM photo_comments o
WHERE created =
    (SELECT MAX(created) 
    FROM photo_comments i
    WHERE o.user_id=i.user_id)
Run Code Online (Sandbox Code Playgroud)