我有一个带有UNIX时间戳和事物描述的表。该表将对每件事都有多个条目,所有内容都带有不同的时间戳记。我需要为每件事选择最后五个时间邮票。
如果我有100行a,则为b的130行和20行C,我想为每件事看到最后5个 - 查询应返回15个记录。
我尝试过限制,但这给了我查询的最后五个。
任何建议都将不胜感激。
您可以使用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;
对于100行,您可以轻松地做:
select t.*
from t
where (select count(*)
from t t2
where t2.thing = t.thing and t2.timestampe <= t.timestamp
) <= 5;