MYSQL - 根据某个字段返回最近5行

标签 mysql sql greatest-n-per-group

我有一个带有 unix 时间戳和事物描述的表。该表中的每件事都会有多个条目,所有条目都有不同的时间戳。我需要为每件事选择最后五个时间戳。

如果事物 A 有 100 行,事物 B 有 130 行,事物 C 有 20 行,我想查看每个事物的最后 5 行 - 查询应返回 15 条记录。

我尝试过 limit,但这给了我查询中的最后五个。

如有任何建议,我们将不胜感激。

最佳答案

您可以使用ROW_NUMBER (MySQL 8.0):

SELECT *
FROM (SELECT *,ROW_NUMBER() OVER(PARTITION BY col1 ORDER BY time_col DESC) rn
      FROM tab) sub
WHERE rn <= 5;

关于MYSQL - 根据某个字段返回最近5行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47580735/

相关文章:

javascript - 如果用户名不存在,如何使用 jQuery/php/AJAX 插入用户名?

Sequel gem 中的 MySQL 位运算符

sql - 获取给定 ID 的根节点和叶节点 - 如何?

sql - 找不到多部分标识符的错误

sql - 选择满足某些条件且在某一列中具有最大值的行

mysql - 使用 MAX() 和 GROUP BY 未返回正确的结果

c# - 如何在 C# 中读取 mysql 中的特定列和单元格?

c# - 带参数的 iDB2 Select 命令返回 SQL0418

sql - 基于其他参数结果的 SSRS 灰显参数

mysql - 如何提取具有最大值的行?