MySQL的:结果的数量限制基于接收一列值| 合并查询(MySQL: Limiting numb

2019-06-24 00:58发布

我做对这个问题的研究,但我无法找到一个解决方案。

我有以下查询,让我想起了“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”,它是好的,包括他们,如果这使事情变得不那么复杂。

非常感谢!

Answer 1:

发现在以下职位的第一个答案的时候寻找答案:

如何限制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


Answer 2:

嗨,请使用Group byhaving 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