为了更好地说明我的例子,这通常是我正在寻找的东西:
这就是我的开始:
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”放在一个“更新”声明。我应该如何处理这个以获得我正在寻找的结果?
编辑:此外,虽然我不是100%肯定这一点,但我认为解决这个问题的方法是使用DLast的第三个可选参数,即[criteria]参数。我能想到使用它的唯一方法是为Column1指定一个确切的值,这就是为什么我不确定如何在这里使用它,但我觉得必须有一种方法来操纵它来应用于每个单独的值Column1。
答案 0 :(得分:0)
KryptKeeper - 对于HansUp的回复,对第2列的更新不一定是更高的数字吗?如果没有,那么max(column2)将不起作用。您没有提及您的表是计数器还是累加器或类似的东西。如果更新的记录在第2列中的值也会下降,那么您可能必须携带日期时间戳作为额外列,以便您可以在日期时间列上获取max()。