一个表更新对应于另一个表MySQL更新错误

时间:2018-11-26 10:29:09

标签: mysql sql

我有两个表名称活动和post_media现在,我想根据发布媒体表记录更新活动表中的媒体背景颜色,但是当我运行查询时,它给我错误。

查询

UPDATE A
SET A.bg_color = M.bg_color
FROM activities A
INNER JOIN post_media M ON A.relation_id = M.user_post_id AND A.media=M.file
WHERE A.relation_id>0

错误

  

#1064-您的SQL语法有误;查看与您的MySQL服务器版本相对应的手册以使用正确的语法   'FROM活动附近A INNER JOIN post_media M ON A.relation_id =   第3行的M.user_post _'

2 个答案:

答案 0 :(得分:4)

UPDATE的语法不同于SELECTFROM语句中没有UPDATE子句的用法。

一般流程为:UPDATE <table name> [JOIN <other tables>] SET ...

UPDATE activities A
INNER JOIN post_media M ON A.relation_id = M.user_post_id AND A.media=M.file
SET A.bg_color = M.bg_color
WHERE A.relation_id>0

在此处查看文档以获取完整的语法和进一步的了解:https://dev.mysql.com/doc/refman/8.0/en/update.html

答案 1 :(得分:1)

使用连接的更新查询与SELECT查询不同。在这里,您需要在SET子句和WHERE子句中的所有条件(如SELECT)之前添加表。

例如     更新t1,t2     设置t1.field = t2.field     条件1     AND条件2

因此您的查询将如下所示:

UPDATE activities A, post_media M
SET A.bg_color = M.bg_color
WHERE A.relation_id = M.user_post_id 
AND A.media=M.file
AND A.relation_id>0

尝试这个。