0

私はこの例に従おうとしています: MySQL - count() と 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

4

1 に答える 1

0

インクリメントを開始する前に、rownum を 0 に初期化する必要があります。

SET @rownum := 0; 

クエリの前、またはSELECT最初の後の別の句によってFROM:

SELECT ...
FROM
(SELECT @rownum := 0 ) counter, 
(SELECT
 ... )
于 2012-12-04T19:39:27.310 に答える