[英]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.