Одно обновление таблицы в соответствии с другой таблицей Ошибка обновления MySQL - PullRequest
0 голосов
/ 26 ноября 2018

У меня есть две таблицы с именами activties и post_media. Теперь я хочу обновить цвет фона мультимедиа в таблице действий в соответствии с записью таблицы 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, чтобы узнать правильный синтаксис для использования рядом с «ИЗ действий» ВНУТРЕННЕЕ СОЕДИНЕНИЕ post_media M ON A.relation_id = M.user_post_ 'в строке 3

Ответы [ 2 ]

0 голосов
/ 26 ноября 2018

Запрос на обновление с использованием объединения отличается от запроса 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

Попробуйте этот.

0 голосов
/ 26 ноября 2018

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...