簡體   English   中英

MySQL-通過返回nil從GROUP BY排名COUNT

[英]MySQL - Rank COUNT from GROUP BY returning nil

我正在嘗試遵循以下示例: 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

您必須先將rownum初始化為0,然后才能開始遞增它,方法是

SET @rownum := 0; 

在查詢之前,或在您的第一個FROM后面通過單獨的SELECT子句:

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM