MySQL 使用内连接更新现有值

标签 mysql sql

我正在使用内部联接从详细表更新汇总表,如下所示

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/

相关文章:

sql - 选择中的 PostgreSQL 正则表达式捕获组

php - 在php中自动定期从数据库发布数据

java - com.mysql.jdbc.exceptions.jdbc4.MySQLIntegrityConstraintViolationException : Column 'ID_category' cannot be null

mysql - 无法从我自己的计算机以外的任何计算机(包括 Cloud9)访问 AWS MySQL 实例

sql - 按状态获取每个位置的数量

sql - 如何让 SQL Server 2008r2 显示错误?

mysql - 完全匹配,然后是部分匹配

mysql - 我如何构建这个数据库?

c# - MVC5/C# : Pass LINQ inner Join query to view model

sql - DBCC freeproccache?