提问者:小点点

如何从MySQL中的当前行中获取特定的列值?


如何获取当前行中特定列的值? 假设我们有一个表“games”,列有“gameid”和“game_type”。 每个游戏都有多个赢家(一个用户可以赢得任意次数)。 现在让我们假设我们有另一个表“game_winners”,它跟踪所有的游戏获胜者,并且有“gameid”,“userid”。 我想要实现的是在一个特定的游戏中获得独一无二的胜利者的数量。 我需要的查询如下所示:

select gameid,game_type, (select count(distinct(userid)) from games join winners where gameid = {gameid of current row}) as game_winners from games join winners 

我不确定如何从当前行获取gameid并将其传递到where子句中。

非常感谢任何帮助。


共2个答案

匿名用户

您可以使用相关子查询聚合:

SELECT g.gameid,
       g.game_type,
       (SELECT count(DISTINCT w.userid)
               FROM winners w
               WHERE w.gameid = g.gameid) AS game_winners
       FROM games g;

或联接,然后聚合:

SELECT g.gameid,
       g.game_type,
       count(DISTINCT w.userid) AS game_winners
       FROM games g
            LEFT JOIN winners w
                      ON w.gameid = g.gameid
       GROUP BY g.gameid,
                g.game_type;

另外,distinction不是函数,不需要括号。

匿名用户

这将给出您预期的结果:

SELECT
    g.gameid,
    g.game_type,
    count(DISTINCT gw.user_id) as game_winners
FROM
    `game` g
    LEFT JOIN winners gw ON gw.game_id = g.gameid
GROUP BY
    g.gameid;

如果你想获得单场比赛的结果,只需添加:(用你的ID替换'1')

WHERE g.gameid = 1;