我有一个包含这些列的表:win、los、id ...
我想通过这个索引对表格进行排序:win / ( win + los ) * 30 + win / SUM(win) * 70 然后找到两个 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 秒运行一次,所以我试图非常非常快地找到一些东西。如果有必要,我可以添加、更改、删除任何列,以便尽可能快。