sql - 选择每个 id 的前 x

标签 sql sql-server

我对 SQL 有点生疏。

假设我有 tblMachineLogsMachineLogID , MachineID , LogTime (date+time) .

此表充满了来自 10 台机器的日志,这些机器的 MachineID 1 到 10,其中有很多行。

例如,我想选择每台机器的最后 5 个日志事件。

提前致谢

最佳答案

使用 Window Function 这将帮助您在每个组 (MachineID) 中找到最后的 5 log events

SELECT MachineLogID,
        MachineID,
        LogTime
FROM   (SELECT Row_number()OVER(partition BY MachineID ORDER BY LogTime DESC) Rn,
                MachineLogID,
                MachineID,
                LogTime
        FROM   tblMachineLogs) a
WHERE  rn <= 5 

关于sql - 选择每个 id 的前 x,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28313651/

相关文章:

sql - Sequelize Postgres - 选择不在 groupby 中的字段

sql - Postgres 只选择满足条件的列

sql-server - SQL Server 到服务总线

sql-server - 将 T-SQL json 列读入 varchar 变量

sql - 如何在 PostgreSQL 中添加基于排序顺序的序号 id 字段

mysql - LIKE 子句中的 SQL 注入(inject)攻击

sql - 反向连接 - 分割函数

sql-server - 如何在不重新启动数据库服务器的情况下在 SQL Server 上设置 ALLOW_SNAPSHOT_ISOLATION ON?

sql-server - 如何分离变量和值,然后插入表中?

sql - 什么时候应该使用全文索引?