MySql множественная альтернатива GROUP BY - PullRequest
0 голосов
/ 31 августа 2018

У меня есть две таблицы: 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 самым последним?

1 Ответ

0 голосов
/ 31 августа 2018

Используйте функцию 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
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...