Sql 当出现';时,如何使用每列2的最后一个条目更新两列访问表;是第1列的重复条目吗?

Sql 当出现';时,如何使用每列2的最后一个条目更新两列访问表;是第1列的重复条目吗?,sql,ms-access,vba,ms-access-2007,Sql,Ms Access,Vba,Ms Access 2007,为了更好地说明我的示例,这通常是我正在寻找的类型: 这是我的开始: Column 1 | Column 2 ------------------- A | 1 B | 2 A | 3 我想以以下两种方式结束: 1) 这是比较可取的,因为表中的数据会较少,但肯定不是必需的 Column 1 | Column 2 ------------------- A | 3 B | 2 (二) 为了解释得更清楚一

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

这是我的开始:

Column 1 | Column 2
-------------------
    A    |   1
    B    |   2
    A    |   3 
我想以以下两种方式结束:

1) 这是比较可取的,因为表中的数据会较少,但肯定不是必需的

Column 1 | Column 2
-------------------
    A    |   3
    B    |   2 
(二)

为了解释得更清楚一点,我有一个表,里面有一堆数据。用户可以随时导入数据。问题是偶尔会更新一些条目。在这种情况下,我需要使用最后添加的数据状态更新表中的所有条目。例如,如果最初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 
我猜这是因为没有“groupby”子句告诉它只对Column1的每个实例执行,但是通过研究,看起来你不能在“UPDATE”语句中添加“groupby”。我应该怎样做才能得到我想要的结果


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

KryptKeeper-对于HansUp的回答,column2的更新不一定是更高的数字,是吗?如果没有,则max(column2)将不起作用。你没有提到你的桌子是计数器还是累加器之类的东西。如果更新后的记录在第2列中的值也会下降,那么您可能需要将datetime戳作为一个额外的列,这样您就可以在datetime列中获取max()。

哦,是的,对不起,我本来打算在对HansUp的评论底部提到它,但我忘了。你是对的,它肯定是双向的,但我不介意有人用dmax来解释它,因为它本质上是相同的逻辑。在最后的代码中,我只需将dmax切换到dlast。
dlast()
取决于行的顺序;如果不明确定义排序,
DLast()
是不可靠的
tblData
是一个无序的数据包。db引擎不知道添加的“最后”行是哪一行。它不像Excel电子表格。您需要告诉db引擎如何确定行的顺序。。。添加了一个
日期\u
字段就可以了。嘿,我不确定你的评论去了哪里,但我正准备正确地标记它。你的回答有点奏效。我用DLast()代替DMax(),内部撇号必须改为chr(34)。您确定DLast()不知道最后一行是什么吗?由于我没有订购,我的印象是它默认使用表的底部(即最近添加的数据)。我已经试过好几次了,到目前为止还可以用,但我可能忽略了一些东西。你能给我举个这样的例子吗?
Column 1 | Column 2
-------------------
    A    |   3
    B    |   3
    A    |   3