Microsoft Access或SQL Server中的重复查询

时间:2012-04-22 22:05:42

标签: sql-server ms-access duplicates

我在Access数据库中有超过1,000个具有重复值的条目。我想创建一个名为Duplicate的列,如果记录不是第一个且具有特定值,则将其设置为true。这意味着,如果记录是第一个值为“Red Chair”的记录,则Duplicate字段将设置为false,但所有后续记录的值为“Red Chair”的Duplicate字段将设置为{{1 }}

如何在Access中执行此查询?

此数据库将升迁为SQL Server数据库,因此我选择在检索SQL查询中的记录时“忽略”重复记录。如果这个选项可行,我想知道如何在SQL中替代它。感谢。

3 个答案:

答案 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”);