GROUP BY is bedoeld om te worden gebruikt met aggregatiefuncties, anders selecteert het willekeurig één rij per groep. Uw oplossing (hierboven en in uw zelfantwoord) werkt omdat MySQL de eerste rij van elke groep lijkt te behouden, maar u bent er niet zeker van dat dit altijd zal gebeuren.
U kunt de datum van de laatste opmerking voor elke post_id
. krijgen zoals dit.
select post_id, MAX(datetime) as latest from post_comments group by post_id
Gebruik het om de laatste opmerking te selecteren:
SELECT t1.* FROM post_comments AS t1
JOIN (
SELECT post_id, MAX(datetime) AS latest FROM post_comments GROUP BY post_id
) AS t2
ON t1.post_id = t2.post_id AND t1.datetime = t2.latest