【问题标题】:How to get data from a table如何从表中获取数据
【发布时间】:2010-11-19 08:57:23
【问题描述】:

我必须从下面提到的表格结构中选择玩家姓名,队长姓名。

表结构如下。

创建表 #temp (Playerid int, PlayerName varchar (100), CaptainId int)

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

我必须从这张表中选择球员姓名和队长姓名。 任何人都可以

【问题讨论】:

    标签: sql-server sql-server-2005


    【解决方案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
    

    【讨论】:

      【解决方案2】:

      假设 CaptainId 引用同一张桌子上的 PlayerId,您需要以下内容:

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

      如果你想排除没有队长的玩家,你可以让它成为一个内部连接。

      当然,你可以转换 null:

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

      【讨论】:

        【解决方案3】:

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

        类似

        SELECT p.PlayerName,
         c.PlayerName CaptainName
        FROM #temp p LEFT JOIN
         #temp c ON p.CaptainId = c.PlayerId
        

        【讨论】:

          【解决方案4】:
          SELECT PlayerName, CaptainName 
          FROM PlayerTable INNER JOIN CaptainTable
          ON PlayerTable.CaptainID=CaptainTable.CaptainID
          WHERE CaptainName = 'your query'
          

          【讨论】:

          • 您对问题的误解。只有 1 个表 - #temp。需要自我加入。
          • 而且他可能不想要一个内部连接,这会忽略没有队长的玩家
          猜你喜欢
          • 1970-01-01
          • 2021-12-30
          • 2014-02-09
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2017-07-25
          • 2012-05-21
          相关资源
          最近更新 更多