一尘不染

MySQL:基于列值限制接收到的结果数 合并查询

sql

我已经对此问题进行了研究,但是找不到解决方案。

我有以下查询,为我提供了“ 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个,则可以将它们包括在内,这样会使事情变得不那么复杂。

非常感谢!


阅读 184

收藏
2021-03-10

共1个答案

一尘不染

)

我已经对其进行了修改以满足我的特定需求:

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
2021-03-10