У меня есть две таблицы с этими структурами:
Таблица 1 (комментарии)
+----+---------+------------+--------+---------+
| id | post_id | created_at | author | content |
+----+---------+------------+--------+---------+
| 1 | 3 | 03-01-2020 | Jack | XXX |
| 2 | 1 | 02-29-2020 | Joe | XXX |
| 3 | 3 | 02-24-2020 | Anna | XXX |
| 4 | 2 | 03-01-2020 | Mia | XXX |
+----+---------+------------+--------+---------+
Таблица 2 (сообщения)
+-----+-------------+---------------------+---------+
| id | category_id | name | content |
+-----+-------------+---------------------+---------+
| 1 | 1 | some random name | xxxxxxx |
| 2 | 2 | another random name | xxxxxxx |
| 3 | 1 | third random name | xxxxxxx |
+-----+-------------+---------------------+---------+
Моя цель - получить список с последним комментарием к каждому сообщению определенного c category_id
.
Так, например, если у меня есть категория 1 в качестве входных данных, мне нужны комментарии с id 2 и 1, потому что это всегда последние комментарии для каждого сообщения с данной категорией.
До сих пор , Я получил этот запрос, который возвращает все записи, упорядоченные по дате создания.
select *
from comments c
join posts p on c.post_id = p.id
where p.category_id = 1
order by c.created_at desc;
Я читал о свойстве group by
, но это не гарантирует, что я получу последние записи. Как я могу решить эту проблему?