我正在使用内部联接从详细表更新汇总表,如下所示
drop TEMPORARY table if exists summ ;
drop TEMPORARY table if exists det ;
create TEMPORARY table summ (id int , val int ) ;
create TEMPORARY table det (id int , val int ) ;
insert into summ(id,val) value (1,0) ;
insert into summ(id,val) value (2,0) ;
insert into det(id,val) value (1,10) ;
insert into det(id,val) value (1,10) ;
insert into det(id,val) value (1,20) ;
update summ inner join det on summ.id = det.id
set summ.val = summ.val+ det.val ;
select * from summ where id = 1;
它显示 val 的值为 10 而不是 40 ..出了什么问题? 我在Windows上使用Mysql 5.1
最佳答案
尝试将表与子查询连接起来,该子查询计算每个 ID
的总 val
。
UPDATE summ
INNER JOIN
(
SELECT id, SUM(VAL) totalVal
FROM det
GROUP BY id
) det ON summ.id = det.id
SET summ.val = det.totalVal
关于MySQL 使用内连接更新现有值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16395801/