使用 IN 和子查询进行 MYSQL 更新
嗨,我有这样的表:
表条目:
id |总评论数
_____________________
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
我写的查询:
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 |评论总数
_____________________
1 | 1
2 | 1
3 | 0
4 | 0
预期结果:
表条目:
id |评论总数
_____________________
1 | 4
2 | 2
3 | 0
4 | 0
任何帮助将不胜感激。
Hi i have tables like this :
table entry :
id | total_comments
_____________________
1 | 0
2 | 0
3 | 0
4 | 0
table comments :
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
Query i write :
UPDATE entry
SET total_comments = total_comments + 1
WHERE id IN ( SELECT eid
FROM comments
WHERE id IN (1,2,3,4,5,6))
Results i get is :
table entry :
id | total_comments
_____________________
1 | 1
2 | 1
3 | 0
4 | 0
Expected results :
table entry :
id | total_comments
_____________________
1 | 4
2 | 2
3 | 0
4 | 0
Any help will be appreciated.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(5)
使用:
Use:
如果您确实需要在单独的表中添加total_comments,我会将其设为视图。
这样您就可以避免完全更新total_comments 表的维护任务。
If you really need total_comments in a separate table, I would make that a VIEW.
This way you avoid the maintenance task of updating the total_comments table altogether.
这正是我所期望的。 id 位于您给它的集合中,因此total_comments =total_comments + 1。
它不会为相同值的每个实例添加一个:这不是 IN 的工作方式。 IN 将返回一个简单的布尔值是/否。
That's exactly what I'd expect. The id is IN the set you give it, so total_comments = total_comments + 1.
It's not going to add one for each instance of the same value: that's not how IN works. IN will return a simple boolean yes/no.
尝试:
Try: