使用 SQL 重命名 Access 中的重复项

Rename Duplicates in Access with SQL

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

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

我希望在 Access 中使用 SQL 查询来完成,但我愿意接受其他选项。我只需要留在 Access 中。我是 SQL 的新手,但愿意学习任何东西!

在 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
                              );

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

发生这种情况时,您可以尝试使用 "domain function" 而不是子查询来获取 updatable 查询。在您的情况下,DCount 是适当的域函数。

我在 Access 2010 中使用您的示例数据测试了此查询,它满足了您的要求:

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

请注意,您必须在该查询的两个位置将 YourTable 替换为您的 table 名称。

另请注意,基本概念与戈登的回答类似。但它适用于 Access。

但是请注意,DCount 和其他访问域函数(DSumDMinDMaxDAvg 等)不是portable 到其他数据库。