首页 > 解决方案 > 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语法吗?

标签: mysqlsql-update

解决方案


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;

推荐阅读