0

私はそのようなMySQLテーブルを持っています...

ID | NAME  | RANK | PTS
---+-------+------+----
12 | John  | 1    | 28
18 | Andy  | 2    | 31
23 | Brian | 3    | 16
41 | Mike  | 4    | 33
15 | Jack  | 5    | 35
68 | Anne  | 6    | 24

現在、並べ替え...

SELECT * FROM `ranks` ORDER BY PTS desc

を与えることができるコードを探してIDいます。PTS 列によるランキングが返されます。ID 41 の場合、その列の 2 番目に良いスコアとして 2 を返す必要があります。

答えを得るためにグーグルで何を検索すればよいかわかりません。これを簡単に実行できる SQL コードはありますか? それともphp?RANK列は総合順位で、これPTSまでの現在の週間スコアです。最終的には最大 250 万のエントリが存在する可能性があります。ご不明な点がございましたら、お知らせください。

4

3 に答える 3

2

このクエリを試してください:

ステップ1:

CREATE TABLE t (
id INT(3),
name char(60),
score INT(5)
);

insert into t values(10,"name1",33);
insert into t values(11,"name2",43);
insert into t values(12,"name3",335);
insert into t values(13,"name4",233);

ステップ2:

SET @rank=0;
SELECT @rank:=@rank+1 AS rank, name, id, score from t order by score desc
于 2013-05-02T23:49:09.733 に答える
0

PTS を配列に入れ、ループを作成して列出力を追加するだけです。

$sum = 0;
foreach ($array as $num){
    $sum = $sum + $num;
}
return $sum;
于 2013-05-02T23:45:46.503 に答える