根据另一列从列中检索值

时间:2015-04-27 18:14:43

标签: sql sql-server tsql self-join

从这张足球运动员表中,您如何选择球员的名字和他们的队长的名字?

PlayerID | PlayerName | TeamCaptainID
=====================================
1        | Jay        | 5
2        | John       | 3
3        | James      | 3
4        | Jack       | 5
5        | Jeremy     | 5

我追求的结果是:

Player | Captain
================
Jay    | Jeremy
John   | James
James  | James
Jack   | Jeremy
Jeremy | Jeremy

2 个答案:

答案 0 :(得分:6)

在同一个表上应用inner join似乎已经足够了:

select t1.PlayerName as Player
     , t2.PlayerName as Captain
from tbl t1 
join tbl t2 on t1.TeamCaptainID = t2.PlayerID

答案 1 :(得分:1)

要找到您想要的确切结果,您必须使用自联接,这是如何工作的:

为了达到预期的结果,我们将使用相同的表两次,为了做到这一点,我们将使用表的别名,自连接必须有别名。

要获取玩家及其队长的列表,可以使用以下sql语句:

SELECT a.PlayerName AS "Player",  
b.TeamCaptainID AS "Captain"
FROM team a, team b  
WHERE a.TeamCaptainID=b.PlayerName