mysql - 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)
);
解决方案
我可以建议下一个方法:
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`
;
推荐阅读
- any - 查找最大值的 Shell 脚本。字符串中的数字
- c++ - 如何使用c ++获取win32中活动窗口的句柄?
- mysql - MySQL Docker 不允许来自另一个容器的连接
- c# - 从 Hex 更改为 Ascii 并拆分从串口接收到的数据
- shell - 如何在循环的shell脚本中接收命令行参数
- haproxy - 使用最佳连接重用和保持活动链接 haproxy
- nativescript - 如何在 nativescript 应用程序中指定应用程序组(适用于 iOS)
- c - 如何用 PostgreSQL 编译 Pro*C?
- c# - 如何将 DBSet 实体框架工作对象映射到本地模型?
- python - python尝试执行命令时出现终端错误