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

Mysql 使用其他行的SUM()和COUNT()更新一行,mysql,sql,sql-update,mysql-error-1111,Mysql,Sql,Sql Update,Mysql Error 1111,想象两个表,如: t1: id, sum, cnt t2: id, id_t1, value 我想做一个这样的查询 UPDATE t1, t2 SET t1.sum = SUM(t2.value), t1.cnt = COUNT(*) WHERE t1.id = t2.id_t1; 查询应使用t2的值之和更新t1.sum,其中t1.id=t2.id\u t1和t1.count的行数t1.id=t2.id\u t1 但失败并返回错误:ER\u无效\u组函数\u使用

想象两个表,如:

t1: id, sum, cnt 
t2: id, id_t1, value
我想做一个这样的查询

UPDATE t1, t2 
   SET t1.sum = SUM(t2.value), 
       t1.cnt = COUNT(*) 
 WHERE t1.id = t2.id_t1;
查询应使用
t2
的值之和更新
t1.sum
,其中
t1.id=t2.id\u t1
t1.count
的行数
t1.id=t2.id\u t1

但失败并返回错误:
ER\u无效\u组函数\u使用:组函数的使用无效

我该怎么做

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)

使用此查询时,我遇到很多死锁。我怎样才能避免它们?你说的死锁是什么意思?你能解释一下吗?我使用了许多到服务器的并发连接,前面的查询是对同一个表的插入。我解决了死锁问题,强制对两个操作使用相同的连接。如果你好奇的话,这就是我遇到僵局的地方: