我有两张桌子:teams
和messages
teams
========
id | name
messages
============================
id | team_id | created_date
我需要一个如下所示的结果集:
team name | number of messages | most recent message
例如:
Joe Blow's Group | 23 | 2018-08-29
我最初尝试这个:
select team.id, team.name, count(messages.team_id) as 'Number of
Messages', messages.created_date as 'Last Message' from messages inner join
teams on messages.team_id = team.id group by team.name
制作:
Joe Blow's Team | 23 | 2018-02-14
Bob's Team | 12 | 2018-04-15
等等
问题是日期是为该团队创建的最早的消息,而不是最近的消息。如果我尝试添加sort by
,它只会对此结果集进行排序,但错误的日期。如果我尝试多个'group by',我会为每条消息添加一行。
这需要子查询还是有更简单的方法让created_date
成为最新的?
使用MAX函数获取最新的created_date
。
SELECT group.id,
group.name,
COUNT(messages.group_id) AS 'Number of Messages',
MAX(messages.created_date) AS 'Last Message'
FROM messages
INNER JOIN groups ON messages.group_id = group.id
GROUP BY group.name