我有以下查询,它有效:
select filename, hour, sum(joe) as joe_total, sum(bob) as bob_total
from t1
group by filename, hour
这在以下列中提供了数千行数据:
filename, hour, joe_total, bob_total
每个文件名包含24小时,因此第一行结果将是
filename1, 1, [joe_total_value_hour1], [bob_total_value_hour1]
......第二行是
filename1, 2, [joe_total_value_hour2], [bob_total_value_hour2]
......等等。
我有另一个名为t2的表,其中包含以下字段:
filename, hour, joe_total, bob_total, mary_total, gertrude_total
表t2也有数千行(超过上面选择的结果),但目前列joe_total和bob_total只包含零,需要更新。
所以我想更新t2以便
t2.joe_total = [resuls from the select].joe_total
,类似于每个文件名/小时的t2.bob_total。
我有什么想法可以做到这一点?
答案 0 :(得分:1)
好的,所以这是有效的查询:
update t2 t2u
inner join
(SELECT filename, HOUR , SUM( joe) ) AS joe_total, SUM( bob ) AS bob_total FROM t1 GROUP BY filename, HOUR) t
on (t2u.filename =t.filename and t2u.hour = t.hour)
SET t2u.joe_total = t.joe_total,
t2u.bob_total = t.bob_total,
...
非常感谢Jon C帮助打破我的心理冰雹。
答案 1 :(得分:0)
您可以尝试这样的事情:
UPDATE t2 SET
t2.joe_total = t.joe_total,
t2.bob_total = t.bob_total,
...
FROM
(
select filename, hour, sum(joe) as joe_total, sum(bob) as bob_total
from t1
group by filename, hour
) t
WHERE t2.filename = t.filename
AND t2.hour = t.hour