内部连接没有重复,是否可能?

时间:2012-05-08 14:30:37

标签: sql

鉴于这两个表 表A1有两行具有相同的值'a'

A1
a
a

表A2有两行主键值A,B,它们与'a'

相关联
A2
PK col2
A   a
B   a

我想要的是A1和A2与此结果的连接

a A
a B

显然内部联接在这里不起作用。有没有办法在SQL Server 2008中执行此操作?

5 个答案:

答案 0 :(得分:5)

您可以使用DISTINCT

清除重复项
select distinct
  A1.col1,
  A2.PK
from
  A1
  inner join A2
          on A1.col1 = A2.col2

答案 1 :(得分:1)

如果distinct不受限制

SELECT DISTINCT a.*, b.pk
FROM    A1 a
INNER JOIN A2 b ON (a.[test] = b.fk)

答案 2 :(得分:0)

帖子中没有加入条件,所以我们需要进行交叉加入。我已应用交叉连接并使用distinct来限制重复值。

Select distinct A1.Col1, A2.Pk
From A1 ,A2 

答案 3 :(得分:0)

“并使用distinct限制重复值。” 至少在Postgre 9+中,DISTINCT消除了现有的副本,但没有阻止或限制其出现。

答案 4 :(得分:0)

SELECT DISTINCT A.* 
FROM aTable AS A 
     INNER JOIN 
     bTable AS B USING(columnId)