首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >计算从一个表到另一个表的列中多个行的值。

问计算从一个表到另一个表的列中多个行的值。
EN

Stack Overflow用户
提问于 2015-06-27 10:48:05
回答 1查看 27关注 0票数 1

我有两张桌子“机会”和“物品”。每一个机会都是独一无二的。“项目”和“机会”是通过“时机”联系起来的。因此,一个“机会”能否与多个“项目”“机会”联系起来,有两个专栏:“机会”和“潜力”。“机会主义”是“机会”的独特特征。" items“有三列:"itemsid”,它是项的唯一id。“机会主义”,这是从机会的本质。把项目和机会联系起来。和包含整数值的" value“。

我想要的是:在“时机”的基础上,用“项目”中的“价值”填充“机会”中的“潜力”。

我试过的是:

代码语言:javascript
复制
update opportunities,items
set  opportunties.potential = opportunties.potential + items.value
where  opportunties.opportunitiesid=items.opportuntiesid;

这只会用来自第一个项的项值填充opportunities.potential。

然后我试着分两步做:第一步:

代码语言:javascript
复制
update opportunities,items
set  opportunties.potential = opportunties.potential + items.value
where  opportunties.opportunitiesid=items.opportuntiesid;

然后:

代码语言:javascript
复制
update opportunities,items
set  opportunties.potential = opportunties.potential + items.value
where  opportunties.opportunitiesid=items.opportuntiesid 
and where opportunties.potential != items.value;

这不起作用,因为有些项目具有相同的值。

我不明白为什么我的更新不起作用。

如果还有什么不清楚的地方请告诉我。

提前谢谢你,

史蒂文

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-06-27 12:32:16

我想您想要将来自项的所有值加在一起,然后添加到opportunities.potential中,因为其他的东西没有意义--如果一个机会X有许多项(例如,1、2、3),那么如何用多个值来更新 one opportunity的潜力呢?

对我来说只有一笔钱才有意义。

如果我是对的,那么尝试一个从属(相关)子查询:

代码语言:javascript
复制
update opportunities
    set  opportunties.potential = opportunties.potential + (
        SELECT SUM ( items.value ) FROM items
        WHERE  opportunties.opportunitiesid=items.opportuntiesid
    );

多表版本--在MySql上--这个版本可能比上面的版本更快,因为MySql (据我所知)不知道如何通过将它们重写为联接来优化依赖的子查询,特别是在更新中。

代码语言:javascript
复制
UPDATE opportunities,
  (
     SELECT opportunitiesid, SUM( value ) as val
     FROM items
     GROUP BY opportunitiesid
) x
SET opportunities = opportunities + x.val
WHERE x.opportunitiesid = opportunities.opportunitiesid
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/31087884

复制
相关文章

相似问题

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