我在Access中有一个SQL查询,它应该找到重复项并根据它来更新字段。它给了我“这个查询不可更新”的错误。我在网上读到我需要创建一个创建表的子查询?我真的不知道如何解决这个问题。
这是我的疑问:
UPDATE work T INNER JOIN
(SELECT DIVISION, FIPS_COUNTY_CODE, LAST, SUFFIX, FIRST, TITLE, BIRTHDATE
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
SET T.BAD_CODES = T.BAD_CODES & 'D'
答案 0 :(得分:1)
查询或记录集不可更新的原因 您的数据可能无法更新的原因有很多。有些非常明显:
•查询是Totals查询(使用GROUP BY)或Crosstab查询(使用TRANSFORM),因此记录不是单个记录
•该字段是计算字段,因此无法编辑
•您没有编辑表或数据库的权限/权限
•查询使用VBA函数或用户定义的函数,并且未启用(可信)数据库以允许代码运行
有些原因不太明显,但无法避免:
•正在修改的表是没有主键的链接表。
o对于某些后端数据库(例如Microsoft SQL Server),Access / Jet要求对表进行键控以进行任何更改。这是有道理的,因为Access想要为修改发出SQL查询,但不能唯一地标识记录。
这些情况不太明显:
•包含链接到单个记录和单个记录的某些摘要字段的查询仍然无法编辑
•具有不在关键字段上的多表连接的查询
•联盟查询
从http://www.fmsinc.com/Microsoftaccess/query/non-updateable/index.html
复制