2010-11-19 104 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