繁体   English   中英

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

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

我有两个表:users( user_id ,国家/地区)和message( time_date ,货币,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/03858/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

您的子查询已关闭-您只是按错误的字段进行分组。 这样做也一样。


暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM