从2列中选择值,这两列都是另一个表行的ID

时间:2017-12-22 14:23:13

标签: sql postgresql

让我说我有:

表1:

ID    Name
1     Ann
2     Mike
3     Stan  
4     Kyle

表2:

Pair ID    Person1ID    Person2ID
1          1            2
2          3            4 

我想选择对,但是使用名称而不是ID,所以这将是输出:

1    Ann    Mike
2    Stan   Kyle

我想象一个简单的:

inner join Table1 on Table1.ID=Table2.Person1ID

不起作用,因为我想要它们两个,而不仅仅是一个。

我对SQL很陌生,所以如果有一个简单的答案,我很抱歉。

2 个答案:

答案 0 :(得分:4)

您必须连接两次并使用别名来区分表

SELECT t2.PairID, A.Name, B.Name
FROM Table2 t2
JOIN Table1 A
  ON t2.Person1ID = A.ID
JOIN Table1 B
  ON t2.Person2ID = B.ID

答案 1 :(得分:0)

您可以加入以下子查询:

Select p.PairID, p.Name, q.Name
from 
    (Select t2.PairID, t1.Name
     from Table1 t1 inner join Table2 t2
     on t1.ID = t2.Person1ID) p
inner join   
    (Select t2.PairID, t1.Name
     from Table1 t1 inner join Table2 t2
     on t1.ID = t2.Person2ID) q
on p.PairID = q.PairID

请在demo

中查看结果