繁体   English   中英

在具有两个具有相同字段的表的MS Access 2010中使用右联接时出现问题

[英]Having issues using a Right Join in MS Access 2010 with two tables that have the same fields

我有两个表,表A和表B。每个表都有4个字段,两个字段的名称相同。 这两个表都是从其他表中提取的,每个记录都充当主键。

我想在MS Access 2010中编写一个查询,该查询获取表B唯一的数据,并且不与表A共享。我使用以下图像作为参考,看起来我需要进行右连接。

在此处输入图片说明

你好。 我的SQL有一些不正确的地方,我已经对其进行了测试,但得到的结果不正确。 以下是我最近得到的:

SELECT DISTINCT TableB.*
FROM TableB RIGHT JOIN TableA ON (TableB.Field1 = TableA.Field1) AND (TableB.Field2 = TableA.Field2) AND (TableB.Field3 = TableA.Field3) AND (TableB.Field4 = TableA.Field4)
WHERE (((TableA.Field1) Is Null));

我认为使用not exists会更清楚:

select tableb.*
from tableb
where not exists (select 1
                  from tablea
                  where (TableB.Field1 = TableA.Field1) AND (TableB.Field2 = TableA.Field2) AND (TableB.Field3 = TableA.Field3) AND (TableB.Field4 = TableA.Field4)
                 );

您对RIGHT JOIN使用不正确。 如您所说,您想要一个LEFT JOIN 也就是说,无论第二个表中是否存在匹配项,您都希望将所有行保留在第一个表中( JOIN的“左”表)。 但是, NOT EXISTS做同样的事情,逻辑上会更清楚一些。

如果tablea在您的select语句中,则您希望拥有正确的联接,但是

SELECT DISTINCT TableB.*

您可能需要左连接。 我的建议是将您的代码从右连接更改为左连接。 TableB的作用类似于上面的维恩图中的表A。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM