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