使用子查询选择Count MYSQL

时间:2014-07-17 00:02:48

标签: mysql subquery

我保留了Best-of-Two系列的数据。因此,对于每场比赛,有2场比赛与同一支球队相关联。

所以这意味着每场比赛都有两场比赛,桌子上有每个队伍的每场比赛记录。

因此,对于每1场比赛,有4条记录(A队的第1场比赛,A队的第2场比赛,B队的第1场比赛和B队的第2场比赛)。一场比赛有3种可能的结果:2-0,1-1或0-2。

示例:A队比赛B队3场比赛,C队和D队(2-0,2-0和1-1) select语句中我期望的结果是:

matchId | Team | Wins 
1       |  A   |  2
1       |  B   |  0
2       |  A   |  2
2       |  C   |  0
3       |  A   |  1
3       |  D   |  1

实际数据:

matchId | gameId |teamName | Victory | Loss
2959      3635      Frost       0       1
2959      3490      Frost       1       0
2959      3490      SKT         0       1
2959      3635      SKT         1       0
2956      3487      Frost       0       1
2956      3573      Frost       0       1
2956      3573      Shield      1       0
2956      3487      Shield      1       0
2923      3452      SKT         1       0
2923      3507      SKT         1       0
2923      3507      IM1         0       1
2923      3452      IM1         0       1

所以使用此代码我正在寻找:

matchId |teamName | Wins
2959      Frost       1
2959      SKT         1
2956      Frost       0
2956      Shield      2
2923      SKT         2
2923      IM1         0

这是我目前的代码,试图找出答案:

SELECT DISTINCT b.matchId, c.teamName, d.Wins
FROM PoolOfTeams a JOIN (
    SELECT t1.matchId, t1.gameId, t1.teamName FROM poolOfTeams t1
) b on (b.matchId = a.matchId) JOIN (
    SELECT t2.gameId, t2.teamName FROM poolOfTeams t2
) c ON (c.gameId = b.gameId) JOIN (
    SELECT t3.teamName, SUM(t3.matchVictory) AS Wins
    FROM poolOfTeams t3 group by matchId
) d ON (d.teamName = c.teamName);

1 个答案:

答案 0 :(得分:1)

尝试

SELECT   matchID, Team, SUM(Win) AS Wins
FROM     poolOfTeams
GROUP BY matchID, Team
ORDER BY Team ASC

我认为'GROUP BY'就是你要找的。

编辑:交换GROUP和ORDER语句的顺序。谢谢Rahul。