选择每个id的前x个

Guy*_*hen 1 sql sql-server

我对SQL有点生疏.

可以说我有tblMachineLogsMachineLogID,MachineID,LogTime (date+time).

此表填充了10台机器中的日志,其中包含MachineID1到10个行,并且其中包含大量行.

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

提前致谢

Pரத*_*ீப் 6

使用Window Function它可以帮助您找到5 log events每组中的最后一个(MachineID)

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 
Run Code Online (Sandbox Code Playgroud)