2010-12-15 17 views
0

私は自分のゲームのユーザーのスコアを格納するテーブルを持っています - できるだけできるようにしたいのは、mySQLだけを使ってランクを見つけます(プレイヤーの数が指数関数的に増加するデータベース全体を解析するPHPループ時間が劇的に増加します)。私は、サブクエリへを使用して、その内の単一のアイテムを見つけている行うことができるために必要なもの -mySQLの検索結果からrownumを検索

は、これまでのところ私はランキングが適用されると、結果セットを返すために、この文

select @rownum:[email protected]+1 'rank', s.* from top100 s, (select @rownum:=0) r order by score desc 

を取得することができました前のインサートからの最後のinsert_idを見つける。

ご協力いただければ幸いです。遅れて申し訳ありません

答えて

1
SELECT t.*, 
     (SELECT COUNT(*) 
      FROM top100 t2 
     WHERE t2.score > t.score) AS rank 
    FROM top100 t 
WHERE id = LAST_INSERT_ID() 
+0

多くのおかげで、 - :)に対処するための他のものの多くを持っていた私は、私はちょうどあなたのコードを使用して、自分を削除するか、そう私はあなたのものを使用する必要があり、それをすぐに行く – mmuller

+0

zerkmsを与えます私のものと一緒に? – mmuller

+0

@mmuller:私のクエリは仕事をすると思いますか? – zerkms

関連する問題