MySQL触发器 - 更新表中的最后一行,其平均值来自另一个表
我在创建MySQL触发器时遇到问题 - 我想更新表avg_temp
的最后一行的列temp
,最后一行的记录来自 列stats
表。我在INSERT发生之前通过phpmyadmin执行此操作。
我的代码,希望它有助于解释什么是我想要的代码做:MySQL触发器 - 更新表中的最后一行,其平均值来自另一个表
UPDATE avg_temp(`temp`) SET (
SELECT `id`, AVG(`temperature_C`)
FROM `stats`
GROUP by `id`
LIMIT 144
)
ORDER BY id DESC
LIMIT 1
然而,这将引发一个语法错误。
如果有人能帮助我,那就太好了。
回答:
这应该是MySQL的更新来计算最后的144个值的平均值正确的语法,使用sublquery:
UPDATE avg_temp SET `temp` = AVG( (
SELECT `temperature_C`
ORDER BY id DESC
LIMIT 144
)
)
ORDER BY id DESC
LIMIT 1
回答:
Yyou可以使用一些子查询 和正确的平均结果,你应该使用子查询为得到144行
update avg_temp set temp = (select avg(t1.temperature_C)
from (
SELECT id, temperature_C
FROM stats
ORDER BY id
LIMIT 144
) t1
)
where id = your_id
回答:
你似乎想:
UPDATE avg_temp SET `temp` = (SELECT AVG(temperature_C)
FROM (SELECT s.temperature_C
FROM stats s
ORDER BY id DESC
LIMIT 144
) s
)
ORDER BY id DESC
LIMIT 1;
但是,我会非常怀疑你的愿望,特别是在触发器中。通常,触发器的效果取决于传递给触发器的记录中的数据。我无法想象我曾经写过一个没有引用这种数据的触发器(除了用于测试或信息目的)的情况。
您似乎使用insert
作为计时机制。相反,您可能只想创建一个视图,该视图返回最后144行(或最后144行,而不是最后一行)的平均值。
以上是 MySQL触发器 - 更新表中的最后一行,其平均值来自另一个表 的全部内容, 来源链接: utcz.com/qa/266086.html