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;