我使用wordpress来构建游戏,在这个游戏中用户得分(team_score),我需要获得特定用户的单数排名,所以我写了这条mysql指令来说明它的工作原理:
SELECT
user_id, rank
FROM (
SELECT @rank:=@rank+1 AS rank, user_id FROM usermeta u JOIN (SELECT
@rank:=0) r WHERE u.meta_key='team_score' ORDER BY u.meta_value
) as m
WHERE user_id=32
通过这种方式,我对user_id = 32拥有一个排名,并且该排名是针对具有team_score元键的所有用户计算的
但是我有一个问题,存在一种特殊类型的用户,他们被“隐藏” 在这种情况下,用户的meta_key ='hidden'且值为= 1,否则不存在或为= 0
所以我需要在此选择中排除thoose用户
SELECT @rank:=@rank+1 AS rank, user_id FROM usermeta u JOIN (SELECT
@rank:=0) r WHERE u.meta_key='team_score' ORDER BY u.meta_value
有什么想法吗? 谢谢