在Count上加入表

时间:2016-12-20 16:38:51

标签: sql ms-access

我在Access中有两个表,一个包含ID(非唯一)和一些名称,一个包含ID(非唯一)和Location。我想返回第三个表,其中只包含在名称或位置中出现多次的元素的ID。

表1

ID    Name
1     Max
1     Bob
2     Jack

表2

ID   Location
1    A
2    B

基本上在此设置中,它应仅返回ID 1,因为1在表1中出现两次:

ID 
1

我试图在表上进行JOIN然后应用COUNT但没有出现。

提前致谢!

4 个答案:

答案 0 :(得分:0)

Simple 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 :(得分: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 all / from。它也不支持full outer join。请注意,union将删除重复项。

答案 2 :(得分:0)

根据您的描述,您不需要连接表来查找重复记录,如果您的表格是您上面提供的,只需使用:

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

答案 3 :(得分:-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