带有IN和子查询的MYSQL UPDATE [英] MYSQL UPDATE with IN and Subquery

查看:157
本文介绍了带有IN和子查询的MYSQL UPDATE的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我有这样的表:

表条目:

id | total_comments
_____________________
1 | 0
2 | 0
3 | 0
4 | 0

id | total_comments
_____________________
1 | 0
2 | 0
3 | 0
4 | 0

表注释:

id |开斋节评论
_____________________
1 | 1 |评论sdfd
2 | 1 |测试测试
3 | 1 |评论文字
4 | 2 |假评论
5 | 2 |样本评论
6 | 1 | fg fgh dfh

id | eid | comment
_____________________
1 | 1 | comment sdfd
2 | 1 | testing testing
3 | 1 | comment text
4 | 2 | dummy comment
5 | 2 | sample comment
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))

我得到的结果是:

表条目:

id | total_comments
_____________________
1 | 1
2 | 1
3 | 0
4 | 0

id | total_comments
_____________________
1 | 1
2 | 1
3 | 0
4 | 0

预期结果:

表条目:

id | total_comments
_____________________
1 | 4
2 | 2
3 | 0
4 | 0

id | total_comments
_____________________
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))

这篇关于带有IN和子查询的MYSQL UPDATE的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆