2017-01-03 62 views
1

我有兩個表在Access中,表A和表B:Access查詢比較兩個表

表MasterLockInsNew:

+----+-------+----------+ 
| ID | Value | Date | 
+----+-------+----------+ 
| 1 | 123 | 12/02/13 | 
| 2 | 1231 | 11/02/13 | 
| 4 | 1265 | 16/02/13 | 
+----+-------+----------+ 

表InitialPolData:

+----+-------+----------+---+ 
| ID | Value | Date |Type 
+----+-------+----------+---+ 
| 1 | 123 | 12/02/13 | x | 
| 2 | 1231 | 11/02/13 | x |  
| 3 | 1238 | 10/02/13 | y |  
| 4 | 1265 | 16/02/13 | a |  
| 7 | 7649 | 18/02/13 | z |  
+----+-------+----------+---+ 

所有我想要的是來自表B,ID不包含在A中。我目前的代碼如下所示:

SELECT Distinct InitialPolData.* 
FROM InitialPolData 
WHERE InitialPolData.ID NOT IN (SELECT Distinct InitialPolData.ID 
           from InitialPolData INNER JOIN 
            MasterLockInsNew 
            ON InitialPolData.ID=MasterLockInsNew.ID); 

但是,只要我在Access中運行它,它會崩潰!表格相當大,但我不認爲這是原因。

任何人都可以幫忙嗎?

謝謝

回答

2

,或者嘗試使用left outer join

SELECT b.* 
FROM InitialPolData b left outer join 
MasterLockInsNew a on 
b.id = a.id 
where 
a.id is null 
+0

事實證明,這是獲得我想要的最簡單的方法。其他答案雖然看起來似乎合理,但在運行查詢時導致Access崩潰。感謝所有人的幫助。 – naiminp

2

簡單的子查詢會做。

select * from InitialPolData 
where id not in (
    select id from MasterLockInsNew 
); 
+0

爲什麼不左連接? Ms Access通常更高效。 – Fionnuala

1

嘗試使用NOT EXISTS

SELECT Distinct i.* 
FROM InitialPolData AS i 
WHERE NOT EXISTS (SELECT 1 
        FROM MasterLockInsNew AS m 
        WHERE m.ID = i.ID)