Posty zamówienia MySQL według ostatniego komentarza LUB ostatnio opublikowane

Jak mogę posortować posty, aby najnowsza aktywność była na szczycie?

# Schema not including all info, including FKs
CREATE TABLE post(
   id int unsigned primary key auto_increment,
   msg text,
   created datetime
)ENGINE=InnoDb;

CREATE TABLE comment(
   id int unsigned primary key auto_increment,
   post_id int unsigned,
   msg text,
   created datetime
)ENGINE=InnoDb;

Chcę zamówić posty według najnowszej wersji, w której nowy post jest oczywiście nowszy niż poprzednio opublikowany, ale stary post, z którym powiązany jest ostatni komentarz, kwalifikuje się jako nowszy.

1 próba

# Selecting '*' for simplicity in this example
select *
from post p
left join comment c on c.post_id = p.id
group by p.id
order by c.created desc, p.created desc

To nie działa, ponieważ nowe posty są sortowane po starych postach z komentarzami.

2. próba

select *, if(c.id is null, p.created, c.created) as recency
from post p
left join comment c on c.post_id = p.id
group by p.id
order by recency desc

Nie działa, ponieważ jeśli post ma więcej niż jeden komentarz,niedawność będzie miałstworzony dopasowana wartość pierwszego wiersza, która jest najstarszym komentarzem.

*Czy istnieje sposób grupa wg p.id (więc wybrana jest tylko jedna kopia każdego posta), ale sortowanie w każdej grupie odbywa się przez c.date desc, ale kolejność zapytań jest wykonywana przez recency? Nie mogę wymyślić sposobu na zrobienie tego bez dodawaniazaktualizowany pole dosłupek, do którego napiszę za każdym razem, gdy zostanie wysłana odpowiedź ...

Dzięki!

questionAnswers(1)

yourAnswerToTheQuestion