gpt4 book ai didi

mysql - 检索 INSERT 的第 N 个子查询

转载 作者:行者123 更新时间:2023-11-29 05:43:11 24 4
gpt4 key购买 nike

摘要

从一个包含用户各种帖子的表格到一个论坛,另一个表格每天更新前 20 名的帖子。帖子存储在posts中,每日高分保存在hiscore中。

表格

posts:   post_id(PK:INT) | user_id(INT) | ... | timestamp(TIMESTAMP)hiscore:   user_id(INT) | rank(INT)

Query

TRUNCATE TABLE `hiscore` ;
INSERT INTO `hiscore` (`user_id`,`rank`)
(
SELECT `user_id`, ???
FROM `posts`
WHERE `timestamp` BETWEEN blah AND blah
GROUP BY `user_id`
ORDER BY COUNT(`post_id`) DESC
LIMIT 20
)

实际问题

要在上述查询中插入什么而不是 ??? 来计算排名?

是否有像 @NTH_SUBQUERY 这样的变量会在第五次运行 SELECT 子查询时替代 5?


更新:hiscore 表应该 包含前 20 名发帖者。我知道表结构可以优化。答案的重点应该放在如何确定子查询的当前检索行上。

最佳答案

INSERT INTO `hiscore` (`user_id`,`rank`)
(
SELECT `user_id`, @rank = @rank + 1
FROM `posts`, (SELECT @rank := 0) r
WHERE `timestamp` BETWEEN blah AND blah
GROUP BY `user_id`
ORDER BY COUNT(`post_id`) DESC
LIMIT 20
)

关于mysql - 检索 INSERT 的第 N 个子查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4832668/

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