tableB 上显示'金额':
我想在 tableA 中计算每个'描述'的数量(总共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'
;
但它不起作用。
答案 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 在什么条件) 条件;