首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何更新根据MySql中同一表的其他列中存在的值计算其值的列?

问如何更新根据MySql中同一表的其他列中存在的值计算其值的列?
EN

Database Administration用户
提问于 2019-06-20 10:37:09
回答 1查看 1.3K关注 0票数 0

我有一个表User_Engagement有列:-

我试图在更新查询上实现以下公式,以计算单个查询中所有列的TotalInteraction:

代码语言:javascript
复制
totalInteraction =   value in totalComments + value in totalLikes * ( SUM of averageLikes / SUM of averageComments)

到目前为止,我已经尝试实现这个查询:-

代码语言:javascript
复制
UPDATE User_engagement AS ue 
SET 
ue.totalInteraction = (ue.totalComments + ue.totalLikes) * (SUM(ue.averageLikes)/SUM(ue.averageComments))

上面的查询在MySql中给了我一个错误的MySql。

帮助是非常感谢的。

EN

回答 1

Database Administration用户

发布于 2019-06-20 14:10:37

一种办法是:

代码语言:javascript
复制
SELECT @ratio := SUM(averageLikes)/SUM(averageComments)
    FROM User_engagement;
UPDATE User_engagement
    SET totalInteraction = (totalComments + totalLikes) * @ratio;

但这可能不切实际..。当表中有任何变化时会发生什么?您不需要重新计算和更新表中的所有行吗?

相反,在需要时进行计算:

代码语言:javascript
复制
SELECT ue.totalLikes, ue.averageLikes, ue.averageComments,
       (ue.totalComments + ue.totalLikes) * x.ratio AS totalInteraction
    FROM User_engagement AS ue
    JOIN ( SELECT SUM(averageLikes)/SUM(averageComments) as ratio
            FROM User_engagement ) AS x
票数 1
EN
页面原文内容由Database Administration提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://dba.stackexchange.com/questions/241017

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档