gpt4 book ai didi

php - 如何从一个表中计算每个用户的最佳排名,并使用结果插入/更新另一个表

转载 作者:行者123 更新时间:2023-11-30 22:35:19 29 4
gpt4 key购买 nike

<分区>

我有一个排名板,针对每个性别男性和女性的前 100 个最佳博客。

我有一个博客表:

PRIMARY
blogs_id users_id blogs_score blogs_score_time gender
1 11 2852 2015-09-09 05:21:51 m <-- same score but older date
2 23 2146 2015-09-10 07:31:54 m
3 23 2146 2015-09-10 07:32:26 m
4 23 2852 2015-09-10 04:42:15 m <-- same score but newer date
5 51 1793 2015-09-11 08:15:55 f
6 88 2947 2015-09-11 09:33:18 f

我有一个用户表:

PRIMARY
id best_rank gender
11 0 m
23 0 m
51 0 f
88 0 f

我需要为来自Blogs 表 的每个用户计算最佳排名(使用 MAX(blogs_score) 和 MAX(blogs_score_time))并插入/更新 Users 表每个性别排名最高的前 100 个用户的最佳排名,因此结果应该是:

PRIMARY
id best_rank gender
11 2 m
23 1 m
51 2 f
88 1 f

最佳排名应该针对每个性别

最终的想法是在用户个人资料中显示排名位置,一旦有人投票(blogs 表中的 blogs_score 发生变化),best_rank 列将在users 表必须更新为 ALL 100 个在特定性别组中排名最高的用户的新排名。

如何根据我的需要调整和修复此(无效)查询?

 $sql->query("UPDATE users
JOIN (SELECT b.users_id,
@curRank := @curRank + 1 AS rank,
MAX(blogs_score), MAX(blogs_score_time)
FROM blogs b
JOIN (SELECT @curRank := 0) r
ORDER BY b.blogs_score DESC, p.blogs_score_time DESC LIMIT 100
) ranks ON (ranks.users_id = users.id)
SET users.best_rank = ranks.rank");

请帮助我解决问题。我在stackoverflow上没有找到任何类似的解决方案,我一个人写这样的查询似乎很复杂。

提前致谢!

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