php - Mysql 某一用户多列的Rank

标签 php mysql rank

如何根据一个查询中其他人的统计数据来查找某个用户的三个统计数据的排名?

喜欢

用户 -> 艾伦
等级 -> 25(等级 3)
胜利 -> 347(排名 1)
损失 -> 2(排名 145)

这就是我所拥有的

function get_rank($what,$user) {
$v = mysql_query("
    SELECT username, @curRank := @curRank + 1 AS rank FROM `users`,
    (SELECT @curRank := 0) r
    WHERE id = '".$user."' ORDER BY `".$what."`");
    $a = mysql_fetch_array($v);
        return $v['rank'];
}

它永远不会起作用。

表结构

Id    Username    level    wins    losses
1 Alan 25 347 2
2 Joe 34 100 4
3 Sam 12 600 12

谢谢。

最佳答案

SELECT * FROM
(SELECT m.name,rank_level,rank_win  ,rank_loss
FROM 
    (SELECT @rank := @rank + 1 AS rank_level,name,id FROM users ORDER BY level DESC) m 
    inner join  (SELECT @rankw := @rankw + 1 AS rank_win,name,id 
        FROM users ORDER BY win DESC) w on m.id=w.id 
    inner join  (SELECT @rankl := @rankl + 1 AS rank_loss,name,id 
        FROM users ORDER BY loss DESC) l on m.id=l.id 
     , (SELECT @rank := 0) m2,(SELECT @rankw := 0) w2,(SELECT @rankl := 0) l2
) k
WHERE k.name= 'Alan';

SQL FIDDLE HERE

关于php - Mysql 某一用户多列的Rank,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11875509/

相关文章:

php - 在 PHP mysql_query() 中一次运行两个 MySQL 查询

php - Prestashop CMS 页面查看计数器

mysql - Doctrine 查询在结果中返回额外字段

php - 多重引用的数据类型是什么?

mysql - Sql 仅获取域名

MySQL 8 : RANK function in UPDATE query impossible?

php - upload_max_filesize - 完美的 ubuntu 服务器 ISPConfig 3

php - 为什么我的 typeahead 结果中出现 undefined?

python - 根据面板中其他 bool 数据框对 pandas 数据框进行增量排名

php - 排序计算数据以在 php 中对我的数据进行排名