私は、これはそれを行う必要があると考えていますが、私は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
エラーは発生しませんが、実行に長時間かかるようです。常に0%のプロセスで固執するようです。 130万レコードありますが、ほとんどのクエリは15秒以内に実行されます(基本選択は約10秒で実行されます)。なぜそんなに遅いの? – rohanharrison
それはAccessのレコードの公正な塊で、私は 'UPDATE'が' SELECT'よりもかなり長くかかると思っていますが、どれくらい長く合理的であるかは不明です。 2番目のクエリを試して、それがよりうまく実行されるかどうかを確認することができます、私は彼らがほぼ同じであると思います。 –
時間がかかり過ぎてはいけません。更新されるのは609の重複レコードだけです。私は2番目のクエリを試みます。 – rohanharrison