gpt4 book ai didi

mysql - 将 moving average select 语句重构为 update 语句

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

我有一个有效的选择语句,它选择了 1day_rank 的移动平均值

SELECT
*,
(SELECT AVG(1day_rank)
FROM keyword_rank T2
WHERE (
SELECT COUNT(*)
FROM keyword_rank T3
WHERE timestamp BETWEEN T2.timestamp AND T1.timestamp and t3.keyword_id=t2.keyword_id
) BETWEEN 1 AND 7 and T2.keyword_id=T1.keyword_id and (T2.timestamp > T1.timestamp - interval 7 day)
) average
FROM keyword_rank T1 where T1.keyword_id=86;

我想将此语句重构为更新语句,将结果更新为 7day_rank。但是 MY_SQL 不允许这样做,导致:“错误代码:1093:您不能在 FROM 子句中指定目标表 'T1' 进行更新”

update keyword_rank T1 set T1.7day_rank=
(
SELECT
AVG(1day_rank)
FROM
(select * from keyword_rank sub where sub.keyword_id=86) as T2
WHERE
(
SELECT
COUNT(*)
FROM
keyword_rank T3
WHERE
timestamp BETWEEN T2.timestamp AND T1.timestamp and t3.keyword_id=86
) BETWEEN 1 AND 7 and (T2.timestamp > T1.timestamp - interval 7 day)
)
where T1.keyword_id=86;

所以我尝试使用内部联接重构此语句,但这会产生另一个错误“错误代码:1054,‘where 子句’中的未知列‘T1.timestamp’”

update keyword_rank T1 inner join (
select AVG(1day_rank) average, timestamp from keyword_rank T2
where (
SELECT COUNT(*)
FROM keyword_rank T3
WHERE timestamp BETWEEN T2.timestamp AND T1.timestamp and t3.keyword_id=86
) BETWEEN 1 AND 7 and T2.keyword_id=86 and (T2.timestamp > T1.timestamp - interval 7 day)
) as TX set T1.7day_rank=TX.average;

最佳答案

我能够通过获取整个工作选择并将其放入内部联接来修复查询。

UPDATE keyword_rank as U
INNER JOIN
(
SELECT
T1.keyword_id, T1.timestamp,
(SELECT AVG(1day_rank)
FROM keyword_rank T2
WHERE (
SELECT COUNT(*)
FROM keyword_rank T3
WHERE timestamp BETWEEN T2.timestamp AND T1.timestamp and t3.keyword_id=T2.keyword_id
) BETWEEN 1 AND 7 and T2.keyword_id=t1.keyword_id and (T2.timestamp > T1.timestamp - interval 7 day)
) as average
FROM keyword_rank T1 where T1.keyword_id=86
) T on U.keyword_id=T.keyword_id and U.timestamp=T.timestamp
SET
U.7day_rank = average;

关于mysql - 将 moving average select 语句重构为 update 语句,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48963737/

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