我有两个表名称活动和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 _'
答案 0 :(得分:4)
UPDATE
的语法不同于SELECT
。 FROM
语句中没有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
尝试这个。