SQL 查询以获取特定对象的最新 action/update

SQL query to get the latest action/update on a specific object

我有一个 table 包含项目的审计历史,一个人所做的每一次修改都会在数据库中创建一个数据 event/row,而 table 将存储每个从第一次编辑该项目到最近一次的单次修改。如果一个项目被修改 5,它将有 5 行数据,这些数据将显示例如日期时间、项目名称、项目 ID、编辑者...

现在,我只需要提取该项目的一项且仅是最新的修改。我尝试使用一个 sub-table 来按降序排列更新时间,但是当我将它们连接在一起时,它们将显示该项目从第一次到最新的每一次修改。

谁能帮我提取最新的 action/modification?非常感谢。

在SQL服务器中,我们通常会使用ROW_NUMBER()函数。伪代码类似于:

ROWNUMBER() OVER (PARTITION BY ItemID, ORDER BY EditDate DESC) AS rn

这可以用在临时 table 或普通 table 表达式中,并将添加一个按 EditDate 降序排列的 rn 列(意味着最新的将获得 rn = 1,之前的那个rn = 2,等等)每个 ItemId(如果是复合键,可以添加额外的列)。然后,您可以对该临时 table WHERE rn = 1 执行 select,并根据 ItemID 和 EditDate 加入 table。