我有一個表,這些列:贏,洛杉磯,編號...複雜的mysql排名!
我想按此索引排序表: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秒,爲每一位用戶,所以我試圖找到一些非常,非常快。 如果有必要,我可以添加,更改,刪除任何列,以儘可能快。
我是webdevelopment中的新成員,所以實際上我更喜歡準備好的語句。我已經嘗試了你的第一個建議,但是既不能讓它工作 – silversky 2010-04-21 01:54:35
@silversky:他的意思是你應該在MySQL的命令提示符下使用它,直到你確定它滿足你的要求。那麼你應該把它複製到你的代碼中。 – 2010-04-21 02:07:12
@silversky:如果你不太喜歡mysql命令提示符(它可以工作,但我仍然不喜歡它...... :-),那麼使用其中一個MySQL查詢工具:http:// stackoverflow .com/questions/9185/what-the-the-best-mysql-client-application-for-windows會給你很多提示! – lexu 2010-04-21 05:48:42