用SQL重命名Access中的重复项



我在Access中有一个表,其中有一列数据有重复项。我需要重命名这些重复项(最好在末尾附加1、2、3等)。例如,假设我的数据表如下所示:

ID     Name               Title
1      George Washington  PRES
2      Martha Washington  FL
3      John Adams         PRES
4      Thomas Jefferson   PRES
5      Benjamin Franklin  NA

我想让它看起来像:

ID     Name               Title
1      George Washington  PRES-1
2      Martha Washington  FL-1
3      John Adams         PRES-2
4      Thomas Jefferson   PRES-3
5      Benjamin Franklin  NA-1

我希望在访问中完成SQL查询,但我对其他选项持开放态度。我只需要待在通道里。我是非常新的SQL,但开放学习任何东西!

Access包含子查询的UPDATE查询可以触发错误#3073 ("Operation must use a updatable query").

当发生这种情况时,您可以尝试使用"域函数"而不是子查询来获得可更新的查询。在您的示例中,DCount是合适的域函数。

我用Access 2010中的样本数据测试了这个查询,它做了你所要求的:

UPDATE YourTable AS y
SET y.Title =
    [y].[Title]
    & '-'
    & DCount("*", "YourTable", "[Title]='" & [y].[Title] & "' AND ID <= " & [y].[ID]);

注意,你必须在查询的两个地方用你的表名替换YourTable

还要注意基本概念与Gordon的答案相似。但是它被改编为Access。

但是要注意,DCount和其他Access域函数(DSum, DMin, DMax, DAvg等)不能移植到其他数据库。

在Access中,我认为您可以在update中使用相关子查询:

update table as t
    set title = title & '-' & (select count(*)
                               from table as t2
                               where t2.title = t.title and t2.id <= t.id
                              );

最新更新