我做对这个问题的研究,但我无法找到一个解决方案。
我有以下查询,让我想起了“SOME_ID” S列表:
SELECT some_id FROM example GROUP BY some_id
我有以下查询,将得到5个最新条目的列表,有一个排“SOME_ID”等于一个数字。
SELECT * FROM example
WHERE some_id = 1
ORDER BY last_modified DESC
LIMIT 5
我怎样才能获得从表“榜样”前5个最近的条目为每个“SOME_ID”,只使用一个查询? 如果有小于5项为“SOME_ID”,它是好的,包括他们,如果这使事情变得不那么复杂。
非常感谢!
发现在以下职位的第一个答案的时候寻找答案:
如何限制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
嗨,请使用Group by
和having clause
的检测限为每一个ID ..
SELECT * FROM `example`
GROUP BY some_id
HAVING count( * ) <= 5
ORDER BY last_modified DESC
它将检查每some_id
并检查是否number of rows for some_id is <=5
那么这将是显示的结果。
文章来源: MySQL: Limiting number of results received based on a column value | Combining queries