如何在子查询值中使用Rank()或ROW_NUMBER()mysql 8.0+函数?

问题描述 投票:0回答:1

假设我想根据票数对用户进行排名,而票数是在一个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`
rank row-number mysql-8.0
1个回答
0
投票

你可以把查询移到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
© www.soinside.com 2019 - 2024. All rights reserved.