使用 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
和其他访问域函数(DSum
、DMin
、DMax
、DAvg
等)不是portable 到其他数据库。
我在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
和其他访问域函数(DSum
、DMin
、DMax
、DAvg
等)不是portable 到其他数据库。