簡體   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