Пытаясь создать запрос, в котором я извлекаю 1000 лучших сообщений (по time_spent
) за указанный тег , я пришел к следующему запросу, где 1, 2, 3
- это указанные теги:
SELECT g.tagid, e.post_id, SUM(e.time_spent) AS time
FROM post_table e
JOIN (SELECT g.postid, g.tagid
FROM tags_table g
WHERE g.tagid IN (1, 2, 3)) g
ON e.post_id = g.postid
WHERE dt >= '2018-06-01'
GROUP BY g.tagid, e.post_id
ORDER BY time DESC
LIMIT 1000
Однако проблема с использованием LIMIT 1000
заключается в том, что он ограничивает всю группу и делает так, что я получаю всего 1000 результатов вместо 1000 результатов для каждого тега 1, тега2, и тег 3 (т.е. всего 3000 результатов).
Как изменить этот запрос так, чтобы LIMIT
встречался только в компоненте e.post_id
GROUP BY
?Или, альтернативно, есть ли другой способ получения 1000 результатов для каждого из тегов, указанных в предложении IN
?