gpt4 book ai didi

MYSQL JOIN同表+COUNT判断排名

转载 作者:行者123 更新时间:2023-11-30 22:00:26 25 4
gpt4 key购买 nike

我有一个表 RANKINGS,其中包含几个 userId,与一个 genreId 相关联,以及一个与该流派相关的排名。

作为基准,我将使用 userId = 30520,但该表包含很多记录。

userId    genreId    ranking
30520 0 135
30520 13 91
30520 24 163

手动计算userId的位置很容易,例如最后记录:

SELECT COUNT(ranking) as position
FROM rankings
WHERE genreId = 24
AND ranking >= 163
ORDER BY ranking DESC

通过这种手动方法,我得到:

userId    genreId    ranking    position
30520 0 135 5
30520 13 91 17
30520 24 163 7

但我无法想象这是如何通过一个查询来实现的。我的尝试:

SELECT userId, a.genreId, COUNT(a.ranking) as position,
FROM rankings a
LEFT JOIN
(
SELECT genreId, ranking
FROM rankings
WHERE userId = 30520
) b
ON a.genreId = b.genreId
AND a.ranking >= b.ranking
ORDER BY a.ranking DESC

我只得到一行:

userId    genreId    position
30520 0 3741

感谢您的任何提示!

最佳答案

只需将分组依据添加到您的查询中:

SELECT userId, a.genreId, COUNT(a.ranking) as position
FROM rankings a
LEFT JOIN
(
SELECT genreId, ranking
FROM rankings
WHERE userId = 30520
) b
ON a.genreId = b.genreId
AND a.ranking >= b.ranking
GROUP BY genreId
ORDER BY a.ranking DESC

关于MYSQL JOIN同表+COUNT判断排名,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43591838/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com