我已经研究过这个问题,但找不到解决方案。
我有以下查询,它为我提供了“some_id”列表:
SELECT some_id FROM example GROUP BY some_id
我有以下查询,它将获取“some_id”等于一个数字的行的 5 个最新条目的列表。
SELECT * FROM example
WHERE some_id = 1
ORDER BY last_modified DESC
LIMIT 5
如何仅使用一个查询从表“example”中获取每个“some_id”的前 5 个最新条目?如果“some_id”的条目少于 5 个,则可以包含它们,如果这样可以使事情变得不那么复杂的话。
非常感谢!
最佳答案
在查看以下帖子中的第一个答案时找到了答案:
How do I limit the number of rows per field value in SQL?
我已经修改它以满足我的特定需求:
SELECT * FROM
(
SELECT *, @num := if(@some_id = some_id, @num := @num + 1, 1) as row_num,
@some_id := some_id as some_id
FROM example
ORDER BY last_modified DESC
) as e
WHERE row_num <= 5
关于MySQL:根据列值限制接收到的结果数量 |组合查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10353436/