MySQL根据points字段选择排名

时间:2015-06-06 01:23:44

标签: mysql

我找到了一个经过调整的查询,我根据点数字段选择了商店的等级:

SELECT *,
IF (@score=ui.points, @rank:=@rank, @rank:=@rank+1) rank,
@score:=ui.points score
FROM stores ui,
(SELECT @score:=0, @rank:=0) r
ORDER BY points DESC

如何修改此查询以选择单个商店的排名,例如stores.id = 2

其次,商店属于所有者,所有者可以有许多商店。

商户:

id, name, points, owner_id

所有者:

id, name

如何根据商店积分总分调整查询以选择所有者的排名?

1 个答案:

答案 0 :(得分:0)

你不会。对于单个分数,只需使用不带变量的SQL计算排名。因为你正在做一个" row_number()"样式计数(其中重复值获得不同的排名),查询为:

select count(*)
from stores s cross join
     (select s.* from stores s where s.id = 2) s2
where s.points > s2.points or (s.points = s2.points and s.id >= s2.id);