我找到了一个经过调整的查询,我根据点数字段选择了商店的等级:
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
如何根据商店积分总分调整查询以选择所有者的排名?
答案 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);