sql - 从每个组返回一行

时间:2010-12-18 03:23:41

标签: sql grouping

考虑下表,只返回团队成员及其相关玩家的最佳方式是什么,但每个团队只有一名玩家?需要注意的重要部分是选择需要基于一组给定的玩家ID。这是起点。

使用下面的示例我将拥有播放器ID:1,2,3(以及其他)以及我最终需要的是用户ID列表中的唯一成员资格(在这种情况下为1,2,3) )。我想最终得到id为1&的team_memberships。 2

谢谢!

player
id | name
1  | bob
2  | joe
3  | tom

team_memberships
id | team_id | player_id
1  | 1       | 1
2  | 2       | 2
3  | 1       | 3

team
id | name
1  | jets
2  | kings

1 个答案:

答案 0 :(得分:1)

你的意思是

Select team_id, Min(player_id)
From team_Memberships
Where player_id In (1,2,3)
Group By team_id

如果选择的玩家需要基于玩家表中的其他属性,那么:

Select team_id, 
   (Select Min(player_id) -- in case more than one player satisfies criterion
    From players 
    where playerId = m.Player_Id
       And [Some other ctiterion]) playerId
From team_Memberships m
Where player_id In (1,2,3)  
Group By team_id