1

为了更好地说明我的示例,这通常是我正在寻找的那种东西:

这就是我要开始的:

Column 1 | Column 2
-------------------
    A    |   1
    B    |   2
    A    |   3 

我想以以下任一结尾:

1)这样比较可取,因为表中的数据会更少,但绝对没有必要

Column 1 | Column 2
-------------------
    A    |   3
    B    |   2 

2)

Column 1 | Column 2
-------------------
    A    |   3
    B    |   2
    A    |   3 

所以为了解释得更清楚一点,我有一张表,里面有一堆数据。用户可以随时导入数据。问题是偶尔会更新一些条目。在这种情况下,我需要使用最后添加的数据状态来更新表中的所有条目。例如,如果最初 A 的值为 1,而表后来更新为 A 的值为 3 的条目,我需要更新整个表以显示 A 的值仅为 3。

此外,虽然我知道如何在查询中执行此操作,但我需要能够在表上执行此操作。现在我想到了几个想法,但似乎没有一个可行。我尝试了一个更新查询:

"UPDATE tblData SET column2 = Last(Column2) GROUP BY Column1"

但这似乎并不奏效。我也试过:

"UPDATE tblData Set Column2 = DLast('Column2', 'tblData')" 

这更接近。但是,它正在使用最后一条记录更新所有条目,如下所示:

Column 1 | Column 2
-------------------
    A    |   3
    B    |   3
    A    |   3 

我猜这是因为没有“GROUP BY”子句告诉它只对 Column1 的每个实例执行此操作,但通过研究,看起来您不能将“GROUP BY”放在“UPDATE”中陈述。我应该如何处理以获得我正在寻找的结果?

编辑:此外,虽然我对此不是 100% 确定,但我认为解决此问题的方法是使用 DLast 的第三个可选参数,即 [criteria] 参数。我能想到的唯一方法是为 Column1 指定一个确切的值,这就是为什么我不确定如何在这里使用它,但我觉得必须有一种方法来操纵它以应用于每个单独的值第 1 列。

4

1 回答 1

0

KryptKeeper - 对于 HansUp 的回应,对 column2 的更新不一定是更高的数字,不是吗?如果没有,那么 max(column2) 将不起作用。你没有提到你的桌子是计数器还是累加器或类似的东西。如果更新的记录在第 2 列中的值也可能下降,那么您可能必须携带一个日期时间戳作为额外的列,以便您可以在日期时间列上获取 max()。

于 2012-08-16T14:57:20.810 回答