mysql - 获取最大值和对应的列

标签 mysql sql greatest-n-per-group

如何从mysql中的最大查询中获取相应的列?我想知道一个玩家有多少场胜利。我会通过计算玩家赢得的游戏数量来找出答案。这将通过选择每场比赛的最大值和生成的player_id 来完成。但是我不知道如何获取相应的player_id。

我有

   id   |   game_id | player_id | score

    1   |     1     |     1     |   254
    2   |     1     |     2     |   194
    3   |     2     |     1     |   432
    4   |     2     |     2     |   298

最佳答案

此查询应该得到您需要的内容:

SELECT
    player_id, game_id, score
FROM
(
    SELECT game_id,MAX(score) AS MaxScore
    FROM games
    GROUP BY game_id
) AS Winners
JOIN games
    ON (games.game_id = Winners.game_id AND games.score = Winners.MaxScore)

假设平局对双方来说都是胜利。

SQLFiddle

如果您只想获取玩家及其获胜次数,可以使用以下查询:

SELECT
    player_id, COUNT(*) AS wins
FROM
(
    SELECT game_id,MAX(score) AS MaxScore
    FROM games
    GROUP BY game_id
) AS Winners
JOIN games
    ON (games.game_id = Winners.game_id AND games.score = Winners.MaxScore)
WHERE player_id = {player_id}
GROUP BY player_id

只需将 {player_id} 替换为您要查找的玩家,wins 是他们获胜或平局的次数。

关于mysql - 获取最大值和对应的列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15418496/

相关文章:

sql - T-SQL : Selecting Column Based on MAX(Other Column)

mysql - 为什么在这种情况下使用 Min 或 Max 会产生不同数量的结果?

php - 从数据透视表中获取特定列值

php - CodeIgniter 事件记录偏移无限制?

mysql - 在 SQL 中将属性与需求相匹配

php - 使用 php 和 sql 为每个项目 id 创建一个操作 url

MySQL 构建此查询的最佳方式?

mysql - 连接具有多个相同 ID 的表的表

sql - 从数据库中的列值生成直方图

mysql - 在子查询中加入 `greatest-n-per-group` 和 SUM