使用其他行的SUM()和COUNT()更新一行

Pet*_*ter 2 mysql sql mysql-error-1111 sql-update

想象一下两个表:

t1: id, sum, cnt 
t2: id, id_t1, value
Run Code Online (Sandbox Code Playgroud)

我想做这样的查询;

UPDATE t1, t2 
   SET t1.sum = SUM(t2.value), 
       t1.cnt = COUNT(*) 
 WHERE t1.id = t2.id_t1;
Run Code Online (Sandbox Code Playgroud)

查询应更新t1.sum与值的总和t2,其中t1.id=t2.id_t1t1.count有行存在的计数t1.id=t2.id_t1.

但失败并返回错误: ER_INVALID_GROUP_FUNC_USE: Invalid use of group function

我该怎么办?

Joh*_*Woo 6

UPDATE  t1 a
        LEFT JOIN 
        (
            SELECT  id_t1, 
                    SUM(value) totalSum,
                    COUNT(*) totalCount
            FROM    t2
            GROUP BY id_t1
        ) b ON   a.ID = b.id_t1
SET a.sum = COALESCE(b.totalSum, 0) ,
    a.cnt = COALESCE(b.totalCount, 0)
Run Code Online (Sandbox Code Playgroud)