Проблема с запросом обновления MySQL

#mysql #sql #database

#mysql #sql #База данных

Вопрос:

Я знаю, что это как-то связано с синтаксисом, но я ищу способ сделать следующее:

 UPDATE modules
SET ServerID = boards.ServerID
FROM boards,modules
WHERE modules.ID = boards.ID
  

это не работает. Я использую MySQL

Ответ №1:

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

 UPDATE boards,modules
SET modules.ServerID = boards.ServerID
WHERE modules.ID = boards.ID
  

Прочитайте синтаксис ОБНОВЛЕНИЯ MYSQL наhttp://dev.mysql.com/doc/refman/5.0/en/update.html

Вы также можете выполнять операции ОБНОВЛЕНИЯ, охватывающие несколько таблиц….

 UPDATE items,month SET items.price=month.price
WHERE items.id=month.id;
  

В предыдущем примере показано внутреннее соединение, в котором используется запятая
оператор, но операторы ОБНОВЛЕНИЯ с несколькими таблицами могут использовать любой тип
соединение разрешено в операторах SELECT, таких как LEFT JOIN.

Комментарии:

1. Вероятно, вам следует добавить префикс ServerID с modules , чтобы избежать неоднозначной ссылки на столбец

Ответ №2:

 UPDATE modules
SET ServerID = (SELECT b.ServerID FROM boards b WHERE b.ID = modules.ID)
  

Ответ №3:

 UPDATE modules
INNER JOIN boards
ON modules.ID = boards.ID
SET modules.ServerID = boards.ServerID
  

Ответ №4:

Синтаксис ОБНОВЛЕНИЯ не включает Из

FROM предназначен для ВЫБОРА.

если вы хотите объединить два:

 UPDATE modules SET ServerID = (SELECT boards.ServerID FROM boards WHERE boards.ID = modules.ID)