Microsoft Access 掲示板

SQL where exists

3 コメント
views
4 フォロー

重複レコードを削除したいです。その際、職員ID、会社ID、組織IDなどが同一で、
作成日が一番古いレコードのみを残して削除したいです(作成日のみ相違あり)。

このようなSQLを考えたのですが、シンタックスエラーが回避できません。

参照1というテーブルに、職員ID、会社ID、組織ID、作成日などがあるという前提です。

Delete from 参照1 as 参照1_1
WHERE Exists
(select
from 参照1
INNER JOIN 参照1
ON 参照1_1.会社ID = 参照1.会社ID
AND 参照1_1.組織ID = 参照1.組織ID
AND 参照1_1.職員ID = 参照1.職員ID
where
参照1_1.作成日 > 参照1.作成日)

もっちー
作成: 2023/12/07 (木) 14:21:12
最終更新: 2023/12/07 (木) 14:24:33
通報 ...
1
banjo 2023/12/08 (金) 05:41:31 7ca94@237a3

これでどうでしょうか? 簡単に動作試験しましたが、DELETEがあるので 慎 重 に(!)検討して下さい。

DELETE * FROM 参照1 AS OT
WHERE 作成日 = (
 SELECT MIN(作成日) FROM 参照1 AS IT
 WHERE OT.会社ID=IT.会社ID AND OT.組織ID=IT.組織ID AND OT.職員ID=IT.職員ID
)

2
banjo 2023/12/08 (金) 05:44:15 7ca94@237a3

コピペバッファが古かったです。作成日のところは「作成日 >」です。

3
もっちー 2023/12/12 (火) 21:08:57 aef45@267c5

お返事遅くなりまして申し訳ございません。
こちらでできました。

作成日 > min(作成日)ですか、なるほどです。
どうもありがとうございます。