mysql - MySQL 是否支持 UPDATE SET FROM 语法?
问题描述
我们有桌子t_post
和桌子t_post_like
。
t_post
有一个名为 的列like_count
,它存储了它获得了多少赞。
每次用户喜欢该帖子时,都会在 中创建一个新行t_post_like
,每行包含该帖子的 id 列post_id
。in的like_count
字段t_post
也将增加 1。
现在我们希望like_count
用我在这个答案中找到的这个 SQL 来更正 in t_post :
update p
set p.like_count = l.like_count_by_post
from t_post p inner join
(
select post_id, count(1) like_count_by_post
from t_post_like
group by post_id
) l
on p.id = l.post_id;
但是我们得到了错误right syntax to use near 'from t_post c inner join...
,MySQL 不支持该update set from
语法吗?
解决方案
MySQL 确实支持更新连接语法,但它看起来更像这样:
UPDATE t_post p
INNER JOIN
(
SELECT post_id, COUNT(*) like_count_by_post
FROM t_post_like
GROUP BY post_id
) l
ON l.post_id = p.id
SET
like_count = l.like_count_by_post;
推荐阅读
- python - 我无法让 Opera 在 selenium python 上工作
- c++ - ifstream >> 运算符的分段错误
- openiddict - OpenIddict 解密密钥失败
- java - Spring Framework 的 ListenableFuture#addCallback 完成回调由哪个线程执行?
- javascript - 如何在Javascript中对任意数量的具有不同长度的数组的元素求和?
- apache-kafka - Kafka连接验证源数据和目标数据
- javascript - 为什么在使用 scss 和 css 时没有设置背景颜色?
- abp - 是否可以在 ABP.IO 框架中启用双因素身份验证..?
- c# - 通过 api 获得 Google AdWords 帐户权限
- java - 如何使用 Checker 框架将 NNEL(非 Null 除局部变量)声明为 API 的默认值