2017-03-10 66 views
0

我有兩個表看起來像這樣:的MS Access:比較兩個表與重複

T1:

ID | Date | Hour 

T2:

ID | Date | Hour 

我基本上需要時加入這些表他們的ID,日期和小時匹配。但是,我只想返回表1中與表2中的結果不匹配的結果。

我知道這看起來很簡單,但是我卡住的地方是表中有多行1與表2相匹配(任何給定小時有多個間隔)。我需要返回所有這些間隔的,只要它們不表落入相同小時內2.

實施例的數據:

T1:

1 | 1/1/2011 | 1 
1 | 1/1/2011 | 1 
1 | 1/1/2011 | 1 
1 | 1/1/2011 | 2 

T2:

1 | 1/1/2011 | 1 
1 | 1/1/2011 | 1 

我對此的預期結果集是來自T1的最後2行。任何人都可以在正確的軌道上指出我嗎?

+0

'T1'的第三行與'T2'中的至少一行相匹配,並且您要求最後兩行將返回'T1'行。這是否意味着你希望爲每場比賽返回一個且只有一行,無論發生的頻率如何?或者你實際上是在追逐'T1'的最後一行(這是你在問題的其他地方所要求的嗎? – toonice

回答

0

我覺得你只是想not exists

select t1.* 
from t1 
where not exists (select 1 
        from t2 
        where t2.id = t1.id and t2.date = t1.date and t2.hour = t1.hour 
       ); 

編輯:

我誤解了問題。這在MS Access中很難做到。但是,你可以靠近。以下內容返回表1中不具有相同數字的不同行:

select t1.id, t1.date, t1.hour, (t1.cnt - t2.cnt) 
from (select id, date, hour, count(*) as cnt 
     from t1 
     group by id, date, hour 
    ) t1 left join 
    (select id, date, hour, count(*) as cnt 
     from t2 
     group by id, date, hour 
    ) t2 left join 
    on t2.id = t1.id and t2.date = t1.date and t2.hour = t1.hour 
where t2.cnt < t1.cnt; 
+0

你可以通過MS ACCESS嗎? –

+0

該查詢在MS Access中有效 - 你可能需要爲了避免列名,但這就是全部 –

+0

試過了,但是它讓我在表1中的最後一行。我需要得到最後2行。 –