Update, Join and Select 2个表来计算一个公式

Update, Join and Select 2 tables to calculate a formula

我每天 'Amount' 显示在 tableB :

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

所以,我的公式应该是:

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'
;

但是不行。

您可以将逻辑移至 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 SET 列 1 = (SELECT 表达式 1 从表 2 WHERE条件) WHERE条件;