RJ博客

MySQL 从一张表update字段到另外一张表中

本文目录

个人博客优化过程中,发现每次读取文章+评论数的时候都得去联表查询(blog表 + comment表),于是想在blog表添加评论数字段,以方便读取于是涉及到已有评论数的填充问题。

blog表

blob.png

comment表:

blob.png

其中comment表的bid字段就是对应blog表的id字段,评论字段填充思路如下:

1. comment表按bid字段group by计数,保存在count字段

2. 笛卡尔乘积查找comment.bid = blog.id

3. 更新blog.comment_count=comment.count


方法一:直接嵌套查询更新

UPDATE `blog` SET `blog`.`comment_count` = ( SELECT `count` 
FROM (
SELECT * , COUNT( * ) AS `count` 
FROM `comment` 
GROUP BY `bid` ) AS cc
WHERE `cc`.`bid` = `blog`.`id`
)

方法二:联表查询更新(当更新多个字段的时候效率高)

UPDATE `blog` LEFT JOIN (SELECT * , COUNT( * ) AS `count` 
FROM `comment` 
GROUP BY `bid`
) AS cc ON `cc`.`bid` = `blog`.`id` 
SET `blog`.`comment_count` = `cc`.`count`


相关推荐

发表评论