删除查询会在检测到重复项时删除所有记录而不会保留原始记录

时间:2018-04-16 05:31:12

标签: ms-access ms-access-2010

我有两个表,tbl_NTE和tbl_PAH。 tbl_PAH中的记录已经在tbl_NTE中可用,这就是为什么我创建了一个追加查询来自动传输和更新某些记录,因此每次单击保存按钮都会导致重复,因为保存按钮会触发追加查询查询。 / p>

我想运行一个查询,其中删除了所有带有重复项的数据,并保留原始数据。

我创建了一个删除查询并输入了条件: -

 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),以便在将记录自动附加到其他表时没有错误,但结果会创建重复项。有关使用条件删除重复项的任何帮助"当记录在CaseIDNo方面有重复时,将删除重复项,只留下原始记录。"我是MS Access 2010的新手,这就是我还在学习的原因。我正在使用Microsoft Access 2010.提前感谢那些愿意回答的人。

1 个答案:

答案 0 :(得分:0)

您可以使用以下查询删除ID不是ID最小值的所有重复记录。由于ID是一个唯一的列,因此应该保留原件。

请注意,我已将您的第一个条件从if($var1 != '' && $var2 != '' && $var3 != '' ){ //first condtion if($var1 == 'clear'){ echo 'clear'; } //2nd condtion if($var2 == 'run'){ echo 'run'; } //3rd condtion if($var3 == 'go'){ echo 'go'; } } 重构为IN,因为这些条件通常更快,更可靠。

EXISTS