访问-查询以将重复对象移动到一个表中,将非重复对象移动到另一个表中

时间:2019-02-01 22:50:52

标签: sql ms-access join

目标:

将创建两个表的查询。一个保持重复的和一个保持无重复的记录。

当前查询的工作方式:

运行查询时,将识别重复项并将其显示在表2带来的列中。

我现在拥有的SQL查询:

SELECT
     Table1.Column3 , Table2.Column3
    ,Table1.Column4 , Table2.Column4
    ,Table1.Column5 , Table2.Column5
    ,Table1.Column7 , Table2.Column7
    ,Table1.Column8 , Table2.Column8

From      Table1 
Left Join Table2  
On

(        Table1.Column3 = Table2.Column3
 AND     Table1.Column4 = Table2.Column4
 AND     Table1.Column5 = Table2.Column5
 AND  (  Table1.Column7 = Table2.Column7
      OR Table1.Column8 = Table2.Column8
      )
 )

这可能吗?这样做的目的是为用户提供运行上的文件重复检查的能力,其次是出口具有的非重复作为一个新的文件,而他们可以看看表重复表进行数据分析。

我目前正在处理查询,因此我会在确定改进后更新此帖子。

每个请求的样本数据(以下数据中的第5列已消除):

Table1.Column3  Table1.Column4  Table1.Column7  Table2.Column7  Table1.Column8  Table2.Column8  
AAA             9898            7897897546                        9878795644        
BBB             9898            5489411321                        3321346544        
AAA             9898            8948798794                        3987496321        
AAA             9898            1321316564                        9874631245        
AAA             8878                                              A11111111111  A11111111111    
BBB             8878                                              A22222222222  A22222222222    
BBB             8878            33333333333     33333333333         
BBB             6988            44444444444     44444444444         

您在上面看到的是标识重复项的查询。 Table2列是已识别的重复项(查询从Table2中引入了这两列)。

在这种情况下,我希望(连同表2列我领中移除)被移除,并存储在其自身的表和非重复要被存储的另一个表内的重复。

此外,通过此查询,Access不允许我选择“创建表格”功能。

1 个答案:

答案 0 :(得分:1)

可以导出查询。

尝试在查询中添加WHERE子句。您将需要两个查询。

使用过帐的数据集作为查询的源表。请注意,在创建表时,我在字段名称中未添加句点。

对于重复项似乎很简单:
WHERE Table1Column8=[Table2Column8] OR Table1Column7=[Table2Column7]

要选择非重复项,请执行以下操作:

SELECT * FROM Data WHERE Table1Column3 & Table1Column4 
NOT IN (SELECT Table1Column3 & Table1Column4
    FROM Data WHERE Table1Column8=[Table2Column8] OR Table1Column7=[Table2Column7]);