我认为应该这样做,但我对 Access 不是很熟悉:
UPDATE [WORK]
SET BAD_CODES = BAD_CODES & 'D'
WHERE EXISTS (SELECT DIVISION, FIPS_COUNTY_CODE, LAST, SUFFIX, FIRST, TITLE, BIRTHDATE, COUNT(*)
FROM work b
WHERE [WORK].DIVISION = b.DIVISION
AND [WORK].FIPS_COUNTY_CODE = b.FIPS_COUNTY_CODE
AND [WORK].LAST = b.LAST
AND [WORK].SUFFIX = b.SUFFIX
AND [WORK].FIRST = b.FIRST
AND [WORK].TITLE = b.TITLE
AND [WORK].BIRTHDATE = b.BIRTHDATE
GROUP BY DIVISION, FIPS_COUNTY_CODE, LAST, SUFFIX, FIRST, TITLE, BIRTHDATE
HAVING COUNT(*) > 1
)
这应该是等效的,但是如果您想在更新中使用子查询中的值,这很有用:
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