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