2010-11-19 101 views
3

我必须从下面提到的表格结构中选择球员名称,队长名称。如何从表格中获取数据

表结构如下。

创建表#TEMP(Playerid INT,PlayerName为varchar(100),CaptainId INT)

PlayerId  PlayerName  CaptainId 
-------------------------------------- 
1   Dhoni   NULL 
2   Sachin   1 
3   Rahul   1 

我必须从这个表他的队长的名字一起选择的球员的名字。 有谁能够

+0

萨钦应该是#1。 :) – RPM1984 2010-11-19 09:06:10

+0

是的,你是对的) – 2010-11-19 09:10:56

回答

1

有不同的方法来得到这个查询类似的答案:

select playerName, (select t2.playername from #temp t2 where t2.playerid = t.captainid ) from #temp t 


select t1.playername , t2.playername captain from #temp t1 left join #temp t2 on t1.captainid = t2.playerid 
1

假设CaptainId引用PlayerId在同一个表,你会希望以下内容:

select t.PlayerName, t2.PlayerName as CaptainName 
from #temp t 
left join #temp t2 on t.CaptainId = t2.PlayerId 

如果你想排除的球员,没有队长,你会使其内部联接。

你可以转换成空,当然:

select t.PlayerName, isnull(t2.PlayerName,'None') as CaptainName 
from #temp t 
left join #temp t2 on t.CaptainId = t2.PlayerId 
1

您可以使用自联接和表的别名。

喜欢的东西

SELECT p.PlayerName, 
c.PlayerName CaptainName 
FROM #temp p LEFT JOIN 
#temp c ON p.CaptainId = c.PlayerId 
0
SELECT PlayerName, CaptainName 
FROM PlayerTable INNER JOIN CaptainTable 
ON PlayerTable.CaptainID=CaptainTable.CaptainID 
WHERE CaptainName = 'your query' 
+0

你误解了这个问题。只有1个表 - #temp。自加入是必需的。 – RPM1984 2010-11-19 09:07:28

+0

他可能不想要一个内部联接,这会省略没有队长的队员 – 2010-11-19 09:11:48

相关问题