gpt4 book ai didi

c# - 版本控制算法

转载 作者:塔克拉玛干 更新时间:2023-11-03 03:06:57 25 4
gpt4 key购买 nike

我有一个存储对象的数据库。我有以下(简化的)架构

CREATE TABLE MyObjects
(
UniqueIdentifier Id;
BigInt GenerationId;
BigInt Value;
Bit DeleteAction;
)

每个对象都有一个唯一标识符(“Id”)和一个(一组)属性(“Value”)。每次更改一个对象的属性值时,我都会在该表中输入一个新行,其中包含一个新的生成 ID(“GenerationId”,它是单调递增的)。如果某个对象被删除,我会通过将“DeleteAction”位设置为 true 来记录这一事实。

在任何时间点(生成),我想检索我所有事件对象的状态!

这是一个例子:

Id    GenerationId Value  DeleteAction
1 1 99 false
2 1 88 false
1 2 77 false
2 3 88 true

世代中的对象是:

  1: 1 {99}, 2 {88}
2: 1 {77}, 2 {88}
3: 1 {77}

关键是:我怎样才能找到代号最接近(但不超过)给定代号的每个唯一对象的行?然后我可以执行过滤后步骤以删除 DeleteAction 字段为 true 的所有行。

最佳答案

这适用于 MS SQL

SELECT id,value
FROM Myobjects
INNER JOIN (
SELECT id, max(GenerationID) as LastGen
FROM MyObjects
WHERE GenerationID <= @Wantedgeneration
Group by ID)
On GenerationID = LastGen
WHERE DelectedAction = false

关于c# - 版本控制算法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/332558/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com