首页 > 解决方案 > MySQL:更新另一个表的计数?

问题描述

我正在尝试使用另一个表的计数来更新一个表中的列,因此我不必进行多项选择即可轻松访问此信息,尽管它没有按预期工作。它似乎正在获取表格的总数。

这是查询:

UPDATE `profile_data` SET `post_count` = (
    SELECT COUNT(*) FROM `profile_post_media` 
    WHERE `post_id` = (SELECT `post_id` 
                       FROM profile_posts 
                       WHERE `profile_posts`.`profile_id` = profile_data.profile_id)
);

标签: mysql

解决方案


我可以建议下一个方法:

UPDATE `profile_data`
-- join pre-calulated counts
JOIN (
    -- calculate post count for each profile
    SELECT
      `profile_id`, COUNT(*) `post_count` 
    FROM `profile_posts` 
    GROUP BY `profile_id`
) `counts` ON `counts`.`profile_id` = `profile_data`.`profile_id`
-- update data using pre-calculated table
SET `profile_data`.`post_count` = `counts`.`post_count`
;

推荐阅读