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条件;
我每天 '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条件;