Mysql 如何在查询中根据分数进行排名

Mysql 如何在查询中根据分数进行排名,mysql,Mysql,正如我所需要的,下面的查询工作得非常好。所有用户获得唯一排名相同点的用户不应获得相同排名 SELECT id, first_name, email, (SELECT rank FROM ( SELECT @rownum:=@rownum+1 rank, u.id AS user_id, points FROM

正如我所需要的,下面的查询工作得非常好。所有用户获得唯一排名相同点的用户不应获得相同排名

SELECT  
    id, 
    first_name, 
    email, 
    (SELECT 
        rank 
    FROM (  SELECT 
            @rownum:=@rownum+1 rank, 
            u.id AS user_id, 
            points 
        FROM 
            user_master u, (SELECT @rownum:=0) r
        ORDER BY 
            points 
        DESC) AS tmp 
    WHERE 
        user_id = um.id) AS Rank,
    registered_date AS registered,
    um.points as Points
FROM 
    user_master um
ORDER BY 
    um.id ASC 
现在我想查看这个查询,它会给我错误消息

视图的SELECT在FROM子句中包含一个子查询

我还尝试首先创建一个用户等级视图,以合并两个不同的视图。下面的查询给出了完美的用户排名,但当我试图对此进行查看时:

SELECT 
    @rownum:=@rownum+1 rank, 
    id AS user_id, 
    points 
FROM 
    user_master u, (SELECT @rownum:=0) r
ORDER BY 
    points 
DESC 
…它给我错误信息:

视图的SELECT包含一个变量或参数

是否有其他方法在此查询中应用秩即使点相同,秩也必须是唯一的

试一试:

create view test_view as SELECT t.id,t.first_name,t.email,
    (select sum(case when t1.points > t.points then 1
                     when t1.points = t.points and t1.id < t.id then 1
                else 0 end) from user_master t1)+1 as rank, t.registered_date AS registered,
t.points as Points 
from user_master t
order by points desc;