sql >> データベース >  >> RDS >> Mysql

ユーザー名を指定すると、順序付けされていないMySqlデータベースからスコアに基づいてランクを取得します

    これは、同じスコアを持つランクを処理します。

    SELECT  d.*, c.ranks
    FROM
            (
              SELECT    Score, @rank:[email protected]+1 Ranks
              FROM
                      (
                          SELECT  DISTINCT Score 
                          FROM    tableName a
                          ORDER   BY score DESC
                      ) t, (SELECT @rank:= 0) r
            ) c 
            INNER JOIN tableName d
                ON c.score = d.score
    // WHERE   d.username = 'Helen'
    

    たとえば

    KEY     username    password    score   Ranks
    1       Anna        123         5       3
    2       Bobby       345         6       2
    3       Helen       678         6       2
    4       Jon         567         2       4
    5       Arthur      ddd         8       1
    

    パフォーマンスを向上させるには、INDEXを追加します 列Score

    ALTER TABLE tableName ADD INDEX (Score)
    


    1. Mysql、個別の列でグループ化されたIDを選択します(一意のドメインごとにすべてのIDを選択します)

    2. タイムゾーンの問題にどのように対処しますか?

    3. データをcsvファイルにエクスポートするストアドプロシージャは、1つのファイルにのみエクスポートします

    4. NetBeansで編集不可能/生成されたコードを変更する方法