私はこれらの列を持つテーブルを持っています: win, los, id ...
このインデックスでテーブルを並べ替えたいと思います: win / ( win + los ) * 30 + win / SUM(win) * 70 そして、2 つの ID のランクを見つけます。私はmysqlがあまり得意ではないので、私が書いたことは完全に間違っています。(Perl + DBI + DBD::mysql を使用):
$stmt=$con->prepare("SET @rk := 0");
$stmt=$con->prepare("SELECT rank, id FROM (
SELECT @rk := @rk + 1 AS rank,
(win/(win+los)*30+win/SUM(win)*70) AS index,
win, los, id
FROM tb_name ORDER BY index DESC) as result
WHERE id=? AND id=?");
$stmt -> bind_param ("ii", $id1, $id2);
$stmt -> execute();
$stmt -> bind_result($rk, $idRk);
また、このクエリは、おそらくすべてのユーザーに対して5〜10秒ごとに実行されると思われるため、非常に高速なものを見つけようとしています. 必要に応じて、できるだけ速くするために、任意の列を追加、変更、削除できます。