删除查询在检测到重复项时删除所有记录而不保留原始记录
Delete Query deletes all records without leaving the original ones when duplicates are detected
我有两个表,tbl_NTE 和 tbl_PAH。 tbl_PAH 中的记录在 tbl_NTE 中已经可用,这就是为什么我创建了一个追加查询来自动传输和更新一些记录,结果导致每次单击保存按钮时重复,因为保存按钮触发附加查询查询。
我想 运行 一个查询,其中所有重复的数据都被删除,只保留原始数据。
我创建了一个删除查询并输入了条件:-
In (SELECT [CaseIDNo]
FROM [tbl_PAH] As Tmp GROUP BY [CaseIDNo]
HAVING Count(*)>1 )
我也试过将 Last、First、Max 和 Group By 作为标准,但它所做的一切也删除了所有记录。
In (SELECT DISTINCTROW tbl_PAH.CaseIDNo
FROM tbl_PAH
GROUP BY tbl_PAH.CaseIDNo
HAVING (((tbl_PAH.CaseIDNo) In (SELECT Last(tbl_PAH.CaseIDNo) AS
LastOfCaseIDNo FROM tbl_PAH Group By tbl_PAH.CaseIDNo HAVING
(((Count(tbl_PAH.CaseIDNo))>1));)));)
这是我试过的另一个,但也删除了所有重复记录而不保留原始记录。
DELETE tbl_PAH.CaseIDNo
FROM tbl_PAH
WHERE (((tbl_PAH.CaseIDNo) In (SELECT DISTINCTROW tbl_PAH.CaseIDNo
FROM tbl_PAH
GROUP BY tbl_PAH.CaseIDNo;)));
当我运行它时,所有重复项都被删除而没有留下原始的。关于如何解决这个问题的任何想法?
我已经将唯一记录设置为是。我将索引设置为 Yes (Duplicates Ok) 以在自动将记录附加到其他表时没有错误,但结果创建了重复项。关于删除符合条件 "When a record has duplicates in terms of CaseIDNo, the duplicates will be deleted leaving only the original record." 的重复项的任何帮助我是 MS Access 2010 的新手,这就是我仍在学习的原因。我使用的是Microsoft Access 2010。先谢谢那些会回答的人。
您可以使用以下查询删除所有ID不是ID最小值的重复记录。由于 ID 是一个唯一的列,因此应该保留原件。
请注意,我已将您的第一个条件从 IN
重构为 EXISTS
,因为它们通常更快、更可靠。
DELETE tbl_PAH.CaseIDNo
FROM tbl_PAH t
WHERE EXISTS (SELECT 1 FROM tbl_PAH s WHERE s.CaseIDNo = t.CaseIDNo HAVING COUNT(s.CaseIDNo) > 1)
AND t.ID <> (SELECT Min(s2.ID) FROM tbl_PAH s2 WHERE t.CaseIDNo = s2.CaseIDNo)
我有两个表,tbl_NTE 和 tbl_PAH。 tbl_PAH 中的记录在 tbl_NTE 中已经可用,这就是为什么我创建了一个追加查询来自动传输和更新一些记录,结果导致每次单击保存按钮时重复,因为保存按钮触发附加查询查询。
我想 运行 一个查询,其中所有重复的数据都被删除,只保留原始数据。
我创建了一个删除查询并输入了条件:-
In (SELECT [CaseIDNo]
FROM [tbl_PAH] As Tmp GROUP BY [CaseIDNo]
HAVING Count(*)>1 )
我也试过将 Last、First、Max 和 Group By 作为标准,但它所做的一切也删除了所有记录。
In (SELECT DISTINCTROW tbl_PAH.CaseIDNo
FROM tbl_PAH
GROUP BY tbl_PAH.CaseIDNo
HAVING (((tbl_PAH.CaseIDNo) In (SELECT Last(tbl_PAH.CaseIDNo) AS
LastOfCaseIDNo FROM tbl_PAH Group By tbl_PAH.CaseIDNo HAVING
(((Count(tbl_PAH.CaseIDNo))>1));)));)
这是我试过的另一个,但也删除了所有重复记录而不保留原始记录。
DELETE tbl_PAH.CaseIDNo
FROM tbl_PAH
WHERE (((tbl_PAH.CaseIDNo) In (SELECT DISTINCTROW tbl_PAH.CaseIDNo
FROM tbl_PAH
GROUP BY tbl_PAH.CaseIDNo;)));
当我运行它时,所有重复项都被删除而没有留下原始的。关于如何解决这个问题的任何想法?
我已经将唯一记录设置为是。我将索引设置为 Yes (Duplicates Ok) 以在自动将记录附加到其他表时没有错误,但结果创建了重复项。关于删除符合条件 "When a record has duplicates in terms of CaseIDNo, the duplicates will be deleted leaving only the original record." 的重复项的任何帮助我是 MS Access 2010 的新手,这就是我仍在学习的原因。我使用的是Microsoft Access 2010。先谢谢那些会回答的人。
您可以使用以下查询删除所有ID不是ID最小值的重复记录。由于 ID 是一个唯一的列,因此应该保留原件。
请注意,我已将您的第一个条件从 IN
重构为 EXISTS
,因为它们通常更快、更可靠。
DELETE tbl_PAH.CaseIDNo
FROM tbl_PAH t
WHERE EXISTS (SELECT 1 FROM tbl_PAH s WHERE s.CaseIDNo = t.CaseIDNo HAVING COUNT(s.CaseIDNo) > 1)
AND t.ID <> (SELECT Min(s2.ID) FROM tbl_PAH s2 WHERE t.CaseIDNo = s2.CaseIDNo)