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

mysqlを使用して現在のランクを取得する

    これはサブクエリで実行できます:

    select count(*) as rank
    from users u
    where u.ammopacks >= (select ammopacks from users u2 where u2.id = x)
    

    これはまったく同じことをしません。これにより、実際のランキングが実行され、同じ値のammopacksを持つユーザーが表示されます。 同じランクになります。この場合、オリジナルは異なるユーザーに異なるシーケンシャル値を与えます。

    この効果を得るには、次のようにします。

    select count(*) as rank
    from users u
    where u.ammopacks > (select ammopacks from users u2 where u2.id = x) or
          (u.ammopacks = (select ammopacks from users u2 where u2.id = x) and
           u.id <= x
          )
    



    1. 条件間にORがある場合、MySQLはインデックスを使用できますか?

    2. MySQLiを使用してデータベースにデータを挿入する

    3. ウィンドウ関数または共通テーブル式:範囲内の前の行をカウントします

    4. MySQLシャーディングアプローチ?