Access SQL 如何更新重复项?

Posted

技术标签:

【中文标题】Access SQL 如何更新重复项?【英文标题】:Access SQL How do I update on duplicates? 【发布时间】:2017-01-06 18:24:53 【问题描述】:

现在我有一些 Access SQL 可以在我的表中找到重复项。我正在尝试编写一个单独的 UPDATE 命令来更新与这些重复项关联的字段。

UPDATE T 
    SET BAD_CODES = BAD_CODES  & 'D'
    FROM work AS T 
    JOIN (SELECT DIVISION, FIPS_COUNTY_CODE, LAST, SUFFIX, FIRST, TITLE, BIRTHDATE, COUNT(*)
          FROM work                      
          GROUP BY DIVISION, FIPS_COUNTY_CODE, LAST, SUFFIX, FIRST, TITLE, BIRTHDATE
          HAVING COUNT(*) > 1
          ) AS S
      ON  T.DIVISION = S.DIVISION
      AND T.FIPS_COUNTY_CODE = S.FIPS_COUNTY_CODE
      AND T.LAST = S.LAST
      AND T.SUFFIX = S.SUFFIX
      AND T.FIRST = S.FIRST
      AND T.TITLE = S.TITLE
      AND T.BIRTHDATE = S.BIRTHDATE

我认为这与我需要的很接近,但是我遇到了一个我似乎无法弄清楚的语法错误(缺少运算符)。我的 SQL 出了什么问题?

【问题讨论】:

【参考方案1】:

正确的语法是:

UPDATE work T INNER JOIN
      (/* Subquery */) AS S
      ON  T.DIVISION = S.DIVISION
      AND T.FIPS_COUNTY_CODE = S.FIPS_COUNTY_CODE
      AND T.LAST = S.LAST
      AND T.SUFFIX = S.SUFFIX
      AND T.FIRST = S.FIRST
      AND T.TITLE = S.TITLE
      AND T.BIRTHDATE = S.BIRTHDATE
SET T.BAD_CODES = T.BAD_CODES  & 'D'

Access 不允许更新聚合视图。您必须创建一个临时表并使用它进行更新,然后再删除它。

【讨论】:

现在它只是说语法错误(在它说语法错误之前会给我错误所在的块,这不是很有帮助,因为它是块的 95%)。 我知道这没有帮助,但实际上并没有说。它只是弹出一个显示“语法错误”的框。 @rohan 你现在可以试试吗? 现在它说“操作必须使用可更新的查询”有什么想法吗? Access 不允许更新聚合视图。您必须创建一个临时表并使用它进行更新,然后再删除它。

以上是关于Access SQL 如何更新重复项?的主要内容,如果未能解决你的问题,请参考以下文章

如何在 MS Access 2003 中删除具有唯一 ID 的重复条目?

怎么删除ACCESS中的重复记录 只保留一条

如何删除 Access 表中的重复项(不使用查询)?

如何批量检查 MS-Access 中的重复项并记录更改?

MS Access SQL 如何消除重复值

Ms Access SQL:如何防止 Select 查询重复