MYSQL UPDATE 与 IN 和子查询

标签 mysql sql-update subquery sql-view

你好,我有这样的表:

表格条目:

编号 |总评论数
____________________
1 | 0
2 | 0
3 | 0
4 | 0

表格注释:

编号 |开斋节 |评论
____________________
1 | 1 |评论 sdfd
2 | 1 |测试测试
3 | 1 |评论文字
4 | 2 |虚拟评论
5 | 2 |示例评论
6 | 1 | fg fgh dfh

我写的查询:

UPDATE entry 
   SET total_comments = total_comments + 1 
 WHERE id IN ( SELECT eid 
                 FROM comments 
                WHERE id IN (1,2,3,4,5,6))

我得到的结果是:

表格条目:

编号 |总评论数
____________________
1 | 1
2 | 1
3 | 0
4 | 0

预期结果:

表格条目:

编号 |总评论数
____________________
1 | 4
2 | 2
3 | 0
4 | 0

我们将不胜感激。

最佳答案

使用:

UPDATE entry 
   SET total_comments = (SELECT COUNT(*)
                           FROM COMMENTS c
                          WHERE c.eid = id
                       GROUP BY c.eid)
 WHERE id IN ( SELECT eid 
                 FROM comments 
                WHERE id IN (1,2,3,4,5,6))

关于MYSQL UPDATE 与 IN 和子查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2993110/

相关文章:

mysql - 数据库表分区选择哪个粒度?

java - character_result_set 在 mysql 中为空

sql - 如果子查询返回 null,则 SQL 查询失败

xml - 使用 UPDATEXML 更新 Oracle 中的 XML

MySQL 子查询 IN 结果

mysql - Laravel 5.8,where 子句中带有 Count(*) 的棘手子查询

php - MySQL UPDATE 使用目标表

mysql优化脚本文件

mysql - MySQL中的动态海量表更新

mysql - 从另一个模式 MySql 上的表更新表上的列