如何使用JOIN查找1对多关系中的最新行(日期和时间)


How can I find latest row (date and time) in 1 to many relation using JOIN

我有两个表:users(user_id,country)和message(time_date、currency、amount_sold、message_user_FK)。这些表是1:1的关系,即每个用户可以有多条消息。我想找到每个国家的最新消息。我有以下查询,但它不起作用。我做错了什么?

  SELECT u.country, s.date_time 
  FROM users u 
  JOIN message s ON u.user_id = s.message_user_FK
  JOIN(
  SELECT message_user_FK ,MAX(date_time) date_time 
  FROM message 
  GROUP BY message_user_FK 
  ) s1
  ON(s.message_user_FK = s1.message_user_FK  AND s.date_time =   s1.date_time );

http://sqlfiddle.com/#!9/038858/20

如果您想要最新日期时间的国家,请使用一个简单的查询。joingroup by:

SELECT u.country, MAX(s.date_time)
FROM users u JOIN
     message m
     ON u.user_id = m.message_user_FK
GROUP BY u.country;

这有什么问题?

SELECT u.country ,MAX(m.date_time) date_time 
FROM users u
     JOIN message m on u.user_id = m.message_user_FK
GROUP BY u.country

您的子查询已关闭--您只是按不正确的字段分组。这也会起到同样的作用。


  • 您更新的小提琴