如何获取当前行中特定列的值? 假设我们有一个表“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子句中。
非常感谢任何帮助。
您可以使用相关子查询聚合:
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;