我有两个表: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
,则只会对该结果集进行排序,但日期却不正确。如果我尝试多个“分组依据”,则每条消息都会显示一行。
这是否需要子查询,还是有一种更简单的方法来使created_date
是最新的?
答案 0 :(得分:1)
使用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