在Access中的JOIN中为第二个重复行返回null

时间:2015-11-21 09:12:55

标签: sql ms-access join

我看到很少有帖子可以避免重复。但这不是要从输出中删除重复项。但保留一个表的重复,但避免从连接表重复的行。

所以我有2个表Table1和Table2。 Table1具有ID列的重复值。 Table2没有ID列的重复值。我希望加入这两个表格。在结果中我希望Table1中的所有行包括重复,但我不希望Table2为Table1中的每个重复行重复行。

Table1
ID    Column2
1     A
1     B
2     C
3     D

Table2
ID    Column3
1     X
2     Y  

我的查询

Select A.ID,A.Column2,B.ID,B.Column3 from Table1 A LEFT JOIN Table2 B on A.ID=B.ID

我得到的结果是

ID Column2 ID Column3
1  A       1  X
1  B       1  X
2  C       2  Y
3  D       null null

预期结果是

ID Column2 ID Column3
1  A       1  X
1  B       null  null
2  C       2  Y
3  D       null null

我在访问数据库中看不到任何可能性。

如果有可能获得此结果,请告诉我

1 个答案:

答案 0 :(得分:2)

我现在无法检查,但你会明白这个想法:

select t11.id, t11.col2, t2.id, t2.col3
from (table1 t11
left join (select id, min(col2) as col2 from table1 group by id) t12
  on t11.id = t12.id and t11.col2 = t12.col2)
left join table2 t2 on t12.id = t2.id