Microsoft Access 查询 - 将两个查询合并为一个

Posted

技术标签:

【中文标题】Microsoft Access 查询 - 将两个查询合并为一个【英文标题】:Microsoft Access Query - Merging two queries into one 【发布时间】:2019-01-30 21:50:33 【问题描述】:

使用查询向导,我构建了两个不同的查询,它们具有相似的功能,我试图将它们组合成一个查询。我有两个表(结构相同),我正在匹配以查找重复项:

    查询 #1 如下(包括表 1 中的所有记录,并且仅将表 2 中连接字段相等的记录应用于以下所有列):

    Match Table 1 Column 3  to Table 2 Column 3
    Match Table 1 Column 4  to Table 2 Column 4
    Match Table 1 Column 5  to Table 2 Column 5
    Match Table 1 Column 7  to Table 2 Column 7
    

    如果表 1 中的所有列都与表 2 中的内容匹配,它将识别重复项(我引入表 2 的第 7 列,它将显示我正在寻找的重复项)。

    查询 #2 如下(包括表 1 中的所有记录,并且仅将表 2 中连接字段相等的那些记录应用于以下所有列):

    Match Table 1 Column 3  to Table 2 Column 3
    Match Table 1 Column 4  to Table 2 Column 4
    Match Table 1 Column 5  to Table 2 Column 5
    Match Table 1 Column 8  to Table 2 Column 8
    

    我的第二个查询具有相同的 3 列,但最后一列不同。

    如果表 1 中的所有这些列都与表 2 中的内容相匹配,它将识别重复项(我引入表 2 列 7/8,它将显示我正在寻找的重复项)。

我想做什么:

为查询添加 OR 语句,以显示第 8 列和第 7 列的匹配项的重复项。例如,如果表 1 第 7 列与表 2 第 7 列匹配或表 1 第 8 列与表 2 第 8 列匹配,则显示重复。

这需要UNION 查询吗?

这是其中之一的查询:

SELECT TABLE1.COLUMN_3, TABLE1.COLUMN_4, TABLE1. COLUMN_7, 
       TABLE2.COLUMN_7, TABLE1.COLUMN_5
FROM TABLE1 
LEFT JOIN TABLE2 
  ON  (TABLE1.COLUMN_7 = TABLE2.COLUMN_7) 
  AND (TABLE1.COLUMN_3 = TABLE2.COLUMN_3) 
  AND (TABLE1.COLUMN_4 = TABLE2.COLUMN_4) 
  AND (TABLE1.COLUMN_5 = TABLE2.COLUMN_5);

【问题讨论】:

我删除了不兼容的数据库标签。只标记您真正使用的数据库(有您声誉的人应该知道这一点)。样本数据和期望的结果也会有很大帮助。 有点难以理解逻辑,但是用 AND 和 OR 嵌套括号没有问题,可以给出你想要的任何东西。如果您想查找重复,也可以使用 EXISTS,如果您只想返回重复的行,则可以使用完全连接。 【参考方案1】:

由于表名和列名中有空格,给定的 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
      )
 )

【讨论】:

【参考方案2】:

创建查询 3;添加 Q1 和 Q2 - 在 F7 上加入它们。这将导致该字段的所有匹配项。

创建查询 4;添加 Q1 和 Q2 - 在 F8 上加入它们。这将导致该字段的所有匹配项。

您现在有 2 个具有这些匹配项的数据集(称为重复项)。然后决定如何呈现/显示。如果您需要它们在单个记录集中 - 将它们写入单个通用临时表。但除此之外,您可以轻松地将它们作为子报告/表单一起呈现。

【讨论】:

以上是关于Microsoft Access 查询 - 将两个查询合并为一个的主要内容,如果未能解决你的问题,请参考以下文章

使用 Exist 保留字 Microsoft Access 的两个更新查询

Microsoft Access SQL 查询计数不同

如何定义附加查询的目标 Microsoft Access

带有内部联接和子查询的 Microsoft Access 更新语句

Microsoft Access/SQL 错误参数框

VBA(?):将 Microsoft Access 数据库记录到数据集(列出表/字段/带字段的查询)