我在Access数据库中有超过1,000个具有重复值的条目。我想创建一个名为Duplicate的列,如果记录不是第一个且具有特定值,则将其设置为true
。这意味着,如果记录是第一个值为“Red Chair”的记录,则Duplicate字段将设置为false
,但所有后续记录的值为“Red Chair”的Duplicate字段将设置为{{1 }}
如何在Access中执行此查询?
此数据库将升迁为SQL Server数据库,因此我选择在检索SQL查询中的记录时“忽略”重复记录。如果这个选项可行,我想知道如何在SQL中替代它。感谢。
答案 0 :(得分:2)
您必须使用子查询。试试这个
UPDATE Tabelle1 SET Tabelle1.b = 'Duplicate'
WHERE
((Tabelle1.[ID] In
(SELECT Tabelle1.[ID] FROM Tabelle1 WHERE
((Tabelle1.[a] In
(SELECT [a] FROM [Tabelle1] As Tmp GROUP BY [a] HAVING Count(*)>1 )
)
AND
(Tabelle1.[ID] Not In
(SELECT min([id]) FROM [Tabelle1] as grpid GROUP BY [a] HAVING Count(*)>1)
));
)));
答案 1 :(得分:2)
我不是Access方言的专家,但这种对RJIGO答案或类似方法的改编也可以起作用并且效率更高:
UPDATE Tabelle1 SET
b = 'Duplicate'
WHERE
Tabelle1.[ID] > (
SELECT min([id])
FROM [Tabelle1] as T2
WHERE T2.[a] = Tabelle1.[a]
);
答案 2 :(得分:1)
我希望这个sql帮助你:
SELECT table.field,Count(table.field)AS test,IIf([test]> 1,“TRUE”,“FALSE”)AS check 从表 GROUP BY table.field,IIf([test]> 1,“TRUE”,“FALSE”);