首页 文章

一个表更新符合另一个表MySQL更新错误

提问于
浏览
1

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

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

Error

#1064 - 您的SQL语法出错;查看与您的MySQL服务器版本对应的手册,以便在第3行的“FROM活动A INNER JOIN post_media M ON A.relation_id = M.user_post_”附近使用正确的语法

2 回答

  • 4

    UPDATE 语法与 SELECT 不同 . UPDATE 语句中没有 FROM 子句用法 .

    一般流程是: 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

    使用join更新查询与SELECT查询不同 . 在这里,您需要在SET子句之前添加表,并在WHERE子句中添加所有条件,如SELECT .

    例如/ UPDATE t1,t2 SET t1.field = t2.field WHERE条件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
    

    试试这个 .

相关问题