我在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很陌生,但愿意学习任何东西!
答案 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域功能(DSum
,DMin
,DMax
,DAvg
等)无法移植到其他数据库。
答案 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
);