假设我想根据票数对用户进行排名,而票数是在一个select子查询中计算的,那么如何使用Rank()或ROW_NUMBER()函数?那么如何使用 RANK()
或 ROW_NUMBER()
Mysql 8.0+函数与该子查询值。
下面是一个工作示例,我使用了 RANK()
按功能排序 Select NULL
以完成票数排序
select *, (Rank() OVER(ORDER BY (SELECT NULL))) as ranks,
(select sum(votes)+person.votes from `category_model`) as `votes`
from `person` order by `votes` desc
我可以用上面的代替吗?RANK()
或 ROW_NUMBER()
函数的子查询值??喜欢。
select *, (Rank() OVER(ORDER BY `votes`)) as ranks,
(select sum(votes)+person.votes from `category_model`) as `votes`
from `person`
你可以把查询移到JOIN中,然后使用它。在你的情况下,在计算RANK的时候,你还没有投票。当你把它移到join时,它是先加入的,你已经有值了。
select *, (Rank() OVER(ORDER BY ORDER BY `votes`.`votes`+person.votes)) as ranks
from `person`
CROSS JOIN (select sum(votes) from `category_model`) as `votes`
order by `votes` desc