2016-12-20 47 views
0

我在Access中有兩個表,一個包含ID(不唯一)和一些名稱,另一個包含ID(不唯一)和位置。我想返回第三個表格,其中只包含名稱或位置中出現超過1次的元素的ID。加入表計數

表1

ID Name 
1  Max 
1  Bob 
2  Jack 

表2

ID Location 
1 A 
2 B 

基本上在此設置1,因爲1兩次在表1中顯示,它應該返回唯一ID:

ID 
1 

我試圖在桌子上做一個JOIN,然後應用一個COUNT,但沒有任何東西出來。

在此先感謝!

回答

0

這裏有一個方法,我認爲將在MS Access工作:

(select id 
from table1 
group by id 
having count(*) > 1 
) union -- note: NOT union all 
(select id 
from table2 
group by id 
having count(*) > 1 
); 

MS Access不允許在union/union allfrom條款。它也不支持full outer join。請注意,union將刪除重複項。

+0

它工作完美!謝謝! – Batmax

0

簡單GROUP BY和HAVING子句可以幫助你

select ID  
From Table1 
Group by ID  
having count(1)>1 
union 
select ID  
From Table2 
Group by ID  
having count(1)>1 
-1

不知道我理解你已經嘗試過什麼查詢,但這應該工作:

select table1.ID 
    from table1 inner join table2 on table1.id = table2.id 
group by table1.ID 
having count(*) > 1 

或者,如果你有ID的一個表而不是其他

select table1.ID 
    from table1 full outer join table2 on table1.id = table2.id 
group by table1.ID 
having count(*) > 1 
+0

該方法假定所有的id都在兩個表中。 –

+0

考慮到問題中的信息,這個假設是合理的,但是確定...已修復。 –

0

根據您的描述,你不需要加入表格來查找重複記錄,如果你的表格是上面給出的,只需使用:

With A as ( select ID,count(*) as Times From table group by ID ) select * From A where A.Times>1