Таблица пользователей
id
user_comments Таблица
id | user_id | содержание | created_at
У меня есть список идентификаторов пользователей, и я хочу получить последние 3 комментария для каждого идентификатора пользователя.
SELECT * FROM user_comments WHERE user_id IN (1, 2, 3, 4, 5)
ORDER BY created_at DESC
LIMIT 3;
Это захватит последние 3 комментария от всех совпадающих идентификаторов, мне нужны последние 3 комментария для каждого идентификатора. Предпочтителен 1 запрос без союзов.
Я пробовал правильно присоединиться к столу, но, похоже, не могу это сделать правильно.
** Изменить: я не могу полагаться на столбец идентификатора для заказа, он должен использовать столбец даты.
Спасибо.
** Мое окончательное решение
SELECT user_comments.* FROM user_comments
LEFT OUTER JOIN user_comments user_comments_2
ON user_comments.post_id = user_comments_2.post_id
AND user_comments.id < user_comments_2.id
where user_comments.post_id in (x,x,x)
GROUP BY user_comments.id
HAVING COUNT(*) < 3
ORDER BY user_id, created_at
Ответ, предложенный @PaulSpiegel, сработал для меня (с оговоркой), однако в итоге я выбрал указанное выше решение для соединения, которое я сделал с использованием информации из этого потока: ссылка
упомянутый Биллом Карвином.
Спасибо всем!