每当有第 1 列的重复条目时,如何使用每列 2 的最后一个条目更新两列 Access 表?

Posted

技术标签:

【中文标题】每当有第 1 列的重复条目时,如何使用每列 2 的最后一个条目更新两列 Access 表?【英文标题】:How can I update a two-column Access table with the last entry of each column 2 whenever there's a repeating entry of column 1? 【发布时间】:2012-08-16 14:18:07 【问题描述】:

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

这就是我要开始的:

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 指定一个确切的值,这就是为什么我不确定如何在这里使用它,但我觉得必须有一种方法来操纵它以应用于每个单独的值第 1 列。

【问题讨论】:

DLast() 取决于行的顺序;如果没有明确定义排序,DLast() 是不可靠的。 tblData 是一个无序的数据包。数据库引擎不知道添加的“最后”行是哪一行。它不像 Excel 电子表格。您需要告诉数据库引擎如何确定行的顺序……date_added 字段可以做到。 嘿,我不确定您的评论去了哪里,但我正要正确标记它。你的回答有点奏效。我使用 DLast() 而不是 DMax(),并且必须将内部撇号更改为 chr(34)。你确定 DLast() 不知道最后一行是什么吗?由于我不订购它,我的印象是它默认使用表格底部(即最近添加的数据)。我已经尝试了几次测试,到目前为止它正在工作,但我可能会忽略一些东西。你能给我一个它不起作用的例子吗? 【参考方案1】:

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

【讨论】:

哦,是的,对不起,我打算在对 HansUp 的评论底部提到它,但我忘了。你是对的,它肯定可以双向使用,但我不介意有人用 dmax 来解释它,因为它本质上是相同的逻辑。我会在最终代码中将 dmax 切换为 dlast。

以上是关于每当有第 1 列的重复条目时,如何使用每列 2 的最后一个条目更新两列 Access 表?的主要内容,如果未能解决你的问题,请参考以下文章

如何通过取消旋转标题行来转置Excel中的列[重复]

SQL to .csv - 如何摆脱双数组条目

Pandas - 计算每列的不同值[重复]

使用 Pyspark 计算 Spark 数据帧每列中非 NaN 条目的数量

Python:如何获取按 id 分组的每列的 n 个最大值的平均值

mySQL将表旋转90度[重复]