2

これを投稿する前に、自動インクリメントについて広範な調査を行いましたが、同様のケースが見つかりませんでした:

メインテーブルからデータを取得し、player_id でグループ化し、ポイント desc で並べ替えて、ランキング出力を作成するクエリがあります。私の目的は、同じクエリを作成することです。データの集計と並べ替えが完了したら、新しい列「ランク」を作成し、1、2、3 などを表示するように自動インクリメントします。

みんなありがとう。

ソーステーブルの例:

player_id-----------ポイント-----

---1---------------------5----------

---1-------10---------

---1-------5---------

---2-------------------20---------

---2-------------------5---------

この例に従った望ましい出力:

ランク------player_id-------スコア-----

---- 1 ----------2 -----------25 ポイント ----------

---- 2 ----------1-----------20 ポイント ----------

編集

Rownum はうまく機能します。自動インクリメント仮想列は必要ありません! 以下のMutnowskiの受け入れられた回答を参照してください。

4

2 に答える 2

6

これを試して

SELECT @rownum:=@rownum+1 AS ‘rank’, Player_ID, Points FROM (SELECT Player_ID, SUM(Points) AS 'Points' FROM tblScores GROUP BY Player_ID ORDER BY Points DESC) AS foo, (SELECT @rownum:=0) AS foo2

ランクなしで結果を取得するには、クエリを実行してから、最初にすべてを選択してランクを追加する別のクエリを実行する必要があると思います

于 2012-04-18T20:31:22.080 に答える
-2

Points 列に SUM を適用すると、必要な結果が得られます。

SELECT @rownum:=@rownum+1 AS ‘rank‘,player_id, SUM(points) 
FROM scores
GROUP BY player_id
ORDER BY SUM(points) DESC;
于 2012-04-18T20:37:22.413 に答える