一个表更新到另一个表mysql更新错误

lztngnrs  于 2021-06-17  发布在  Mysql
关注(0)|答案(2)|浏览(333)

我有两个表名为activties和post\u media现在我想根据post media表记录更新activities表中的媒体背景色,但运行query时会出现错误。
查询

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服务器版本对应的手册,查看第3行的“from activities a internal join post\u media m on a.relationship\u id=m.user\u post”的正确语法

r1zk6ea1

r1zk6ea11#

使用联接更新查询与选择查询不同。在这里,您需要在set子句和where子句(如select)中的所有条件之前添加表。
e、 g/更新t1,t2设置t1.field=t2.field,其中条件1和条件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

试试这个。

cngwdvgl

cngwdvgl2#

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

相关问题