根据另一列从列中检索值
Retrieve value from column depending on another column
从这 table 的足球运动员中,您如何 select 球员的名字和队长的名字?
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
在同一个 table 上应用 inner join
似乎就足够了:
select t1.PlayerName as Player
, t2.PlayerName as Captain
from tbl t1
join tbl t2 on t1.TeamCaptainID = t2.PlayerID
要找到您想要的确切结果,您必须使用自连接,这就是它的工作原理:
为了达到预期的结果,我们将使用相同的 table 两次,为此我们将使用 table 的别名,自连接必须有别名。
要获取玩家及其队长的列表,可以使用以下 sql 语句:
SELECT a.PlayerName AS "Player",
b.TeamCaptainID AS "Captain"
FROM team a, team b
WHERE a.TeamCaptainID=b.PlayerName
从这 table 的足球运动员中,您如何 select 球员的名字和队长的名字?
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
在同一个 table 上应用 inner join
似乎就足够了:
select t1.PlayerName as Player
, t2.PlayerName as Captain
from tbl t1
join tbl t2 on t1.TeamCaptainID = t2.PlayerID
要找到您想要的确切结果,您必须使用自连接,这就是它的工作原理:
为了达到预期的结果,我们将使用相同的 table 两次,为此我们将使用 table 的别名,自连接必须有别名。
要获取玩家及其队长的列表,可以使用以下 sql 语句:
SELECT a.PlayerName AS "Player",
b.TeamCaptainID AS "Captain"
FROM team a, team b
WHERE a.TeamCaptainID=b.PlayerName