【问题标题】:MySQL - Rank COUNT from GROUP BY returning nilMySQL - 通过返回 nil 从 GROUP 中排名 COUNT
【发布时间】:2012-11-22 11:15:24
【问题描述】:

我正在尝试遵循以下示例:MySQL - ranking by count() and GROUP BY,但我的 rank 列一直返回 nil。

这是我的查询:

SELECT 
  @rownum := @rownum+1 AS rank,
  q.id, 
  q.Name, 
  q.count 
FROM
(SELECT
    Accounts.id,
    Accounts.Name,
    COUNT(Accounts.Name) AS count
FROM
    player_to_team_histories
        INNER JOIN
    team_histories ON team_histories.id = player_to_team_histories.team_history_id
        INNER JOIN
    teams ON teams.id = team_histories.team_id
        INNER JOIN
    accounts ON accounts.id = teams.account_id
WHERE
    accounts.AccountTypeId = 1 AND player_id IN (SELECT 
        player_id
    FROM
        player_to_team_histories
    WHERE
        player_to_team_histories.not_valid IS NULL AND team_history_id = (SELECT 
            team_history_id
        FROM
            player_to_team_histories
                INNER JOIN
            team_histories ON team_histories.id = player_to_team_histories.team_history_id
        WHERE
            player_to_team_histories.id = 574651))
GROUP BY Accounts.Name
ORDER BY count DESC)q

rank 之外的每一列都按预期返回,rank 为每一行返回null

【问题讨论】:

    标签: mysql count group-by rank


    【解决方案1】:

    在开始递增之前,您必须将 rownum 初始化为 0,或者通过

    SET @rownum := 0; 
    

    在查询之前,或在您的第一个 FROM 之后单独的 SELECT 子句:

    SELECT ...
    FROM
    (SELECT @rownum := 0 ) counter, 
    (SELECT
     ... )
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-04-05
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-04-04
      • 1970-01-01
      相关资源
      最近更新 更多