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

行ランクを取得する方法は?

    推奨されているサブクエリアプローチは、2乗でスケーリングします。 http://www。 xaprb.com/blog/2006/12/02/how-to-number-rows-in-mysql/ は、ユーザー変数を使用したはるかに効率的なアプローチを示しています。これがあなたの問題へのテストされていない適応です:

    @points := -1; // Should be an impossible value.
    @num := 0;
    
    SELECT id
      , points
      , @num := if(@points = points, @num, @num + 1) as point_rank
      , @points := points as dummy
    FROM `users`
    ORDER BY points desc, id asc;
    


    1. SELECTを使用する場合、他のフィールドに基づいて返されたフィールドの値を変更できますか?

    2. PostgreSQLまたはOracleで日付順に並べ替える方法

    3. 数百万の行テーブル、MySQLでのLIKEクエリのパフォーマンス

    4. mysqlは複数の列の配列です