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

时间:2015-06-04 23:44:18

标签: sql ms-access ms-access-2010

我在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

我希望在Access中使用SQL查询来完成,但我对其他选项持开放态度。我只需要留在Access中。我对SQL很陌生,但愿意学习任何东西!

2 个答案:

答案 0 :(得分:3)

包含子查询的访问UPDATE查询可以触发 错误#3073(“操作必须使用可更新的查询”)。

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

我使用Access 2010中的示例数据测试了此查询,并按照您的要求执行了操作:

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

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

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

但请注意,DCount和其他Access域功能(DSumDMinDMaxDAvg等)无法移植到其他数据库。

答案 1 :(得分:1)

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