MySQL:根据列值限制接收到的结果数量 |组合查询

标签 mysql sql greatest-n-per-group

我已经研究过这个问题,但找不到解决方案。

我有以下查询,它为我提供了“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/

相关文章:

Mysql - 查询优化

mysql - mysql函数出错

c# - 将多个 SQL 文件合并为一个 SQL 文件

sql - 根据另一列的最小值选择一列

mysql - Scrapy 批量插入

mysql - 如何为mysql中的主自动增量整数赋予有效的默认值?

sql - 递归 SQL 查询降序

sql - 删除重复行但保留最早的行(按日期标准) - SQL Server

sql - 为每个不同的外键值选择最新的行

php - 是否可以在 zend 框架中使用 mysql 函数(不是内置的)?