Как использовать функцию Rank () или ROW_NUMBER () mysql 8.0 + в значении подзапроса? - PullRequest
0 голосов
/ 27 апреля 2020

Предположим, я хочу ранжировать пользователя на основе голосов, и голоса подсчитываются в выбранном подзапросе. Итак, как использовать функцию RANK() или ROW_NUMBER() Mysql 8.0 + с этим значением подзапроса.

Вот рабочий пример, где я использовал RANK() порядок функций по Select NULL для достижения sh Порядок BY голоса

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`

1 Ответ

0 голосов
/ 27 апреля 2020

Вы можете переместить запрос в JOIN, а затем использовать его. В вашем случае на момент расчета RANK у вас еще нет голосов. Когда вы перемещаете его в соединение, оно присоединяется первым, и у вас уже есть значение.

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
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...