我有两个表: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
如果您想要最新日期时间的国家,请使用一个简单的查询。join
和group 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
您的子查询已关闭--您只是按不正确的字段分组。这也会起到同样的作用。
- 您更新的小提琴