更新,加入和选择2个表来计算公式

时间:2015-10-26 12:39:44

标签: mysql select join sql-update

tableB 上显示'金额'

enter image description here

我想在 tableA 中计算每个'描述'的数量(总共5个):

enter image description here

所以,我的公式应该是:

tableA.Amount = tableB.Amount * tableA.Numbers / sum(tableA.Numbers) 
where tableA.date = tableb.date
group by tableA.Description

在mySQL中我使用的是这段代码:

update tableA
join tableB
on tableB.date = tableA.date  
set tableA.amount = tableB.amount * (select tableA.Numbers from tableA group by tableA.date, tableA.Description) / sum(tableA.Impressions)
where tableA.campaign = 'Autumn'
;

但它不起作用。

2 个答案:

答案 0 :(得分:1)

您可以将逻辑移至from子句。要弄清楚你想要做什么有点难,但我认为它是这样的:

update tableA a join
       tableB b
       on b.date = a.date join 
       (select a.date, sum(a.Numbers) as sumn
        from tableA a
        group by a.date
       ) da
       on a.date = da.date join
    set a.amount = b.amount * a.Numbers / da.sumn
where a.campaign = 'Autumn';

我不知道campaign上的过滤器在做什么,因为它不在您的示例数据中。

答案 1 :(得分:0)

如果语法被修改,如下例所示,它可能应该有效。如果提供错误,修复将是有帮助的。

更新table1 SET column1 =(SELECT expression1                从table2                在什么条件) 条件;