2011-10-11 80 views
3

我知道这事做的语法,但我正在寻找一种方式来做到以下几点:的MySQL更新查询问题

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

这并不工作。我使用MySQL

回答

3

试试这个:

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

http://dev.mysql.com/doc/refman/5.0/en/update.html

阅读MYSQL UPDATE语法,你也可以执行更新操作涉及多个表...

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

上例显示使用逗号 运算符的内部联接,但多表UPDATE语句可以使用SELECT语句(如LEFT JOIN)中允许的任何类型的 联接。

+0

你或许应该前缀'ServerID'与'modules'以避免不明确的列引用 – Phil

+0

烨修复谢谢@菲尔 – Gajahlemu

+0

+1精美的作品:http://www.sqlize.com/F5Wla424tg – mellamokb

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

+1精美的作品:http://www.sqlize.com/6H3lvZk80B – mellamokb

-1

UPDATE语法FROM

不包括是为SELECT。

,如果你想将二者结合起来:

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

改写为清楚起见 – galchen

1
UPDATE modules 
INNER JOIN boards 
ON modules.ID = boards.ID 
SET modules.ServerID = boards.ServerID 
+0

+1精美的作品:http://www.sqlize.com/Ai4Bo7cixg – mellamokb