我有两个表(成员和活动),我试图查询与每个成员的最新活动的成员。我有两个查询(一个获取成员,第二个获得max(id)和group(by member))以及一些合并数据的代码。我确定它可以用一个查询来完成,但我无法完成它。有任何想法吗?在连接表上使用MAX&GROUP BY的MySQL LEFT JOIN?
成员表
id, name
1, Shawn
2, bob
3, tom
活动表
id, member_id, code, timestamp, description
1, 1, 123, 15000, baked a cake
2, 1, 456, 20000, ate dinner
3, 2, 789, 21000, drove home
4, 1, 012, 22000, ate dessert
期望的结果:
id, name, activity_code, activity_timestamp, activity_description
1, shawn, 012, 22000, ate dessert
2, bob, 789, 21000, drove home
3, tom, null, null, null
这似乎是我的成员(汤姆,id = 3)从未登录任何activities.I尝试改变内部联接到左联接。 我想第二个WHERE语句,我的时间戳不保证是唯一的,但ID是一个独特的自动递增字段。 –
@ShawnMcBride请参阅修改后的答案。 – Tomalak
我个人不喜欢条件中的嵌套查询。如果你加入只有MAX时间戳的查询,这将是更加优化的解决方案,比如下面的答案 – dzona