2014-09-23 95 views
1

我正在嘗試更新表列與其他表中的值+一點算術。我不是專家,但閱讀幾個問題似乎必須使用COMMON列上的JOIN從兩個表中選擇數據。這個UPDATE查詢有什麼問題?

UPDATE Farming SET Farming.GoldLabor = Farming.GoldPerUnit/(DataTable.LaborYieldA + 
DataTable.LaborYieldB) 
FROM Farming f INNER JOIN DataTable d ON f.name = d.name; 

錯誤是:

#1064 - You have an error in your SQL syntax; check the manual that corresponds to your 
MySQL server version for the right syntax to use near 'FROM Farming f INNER JOIN 
DataTable d ON f.name = d.name' at line 1 

我使用代碼從其他一些問題的答案在這裏。

https://stackoverflow.com/a/707383

https://stackoverflow.com/a/1746161

我使用的MySQL從1臺& 1主機,我嘗試使用JOIN & INNER JOIN。

謝謝你的時間。

+0

你可以發佈您的實際查詢?該錯誤中有「LIMIT」,但是您的發佈代碼沒有。 – sgeddes 2014-09-23 22:04:05

+0

對不起,嘗試別的時候一定是錯誤的。我更新了錯誤,它顯示了關於該問題的查詢。 – Juan 2014-09-23 22:07:15

+0

看起來像一個重複:http://stackoverflow.com/questions/15209414/mysql-update-join – sgeddes 2014-09-23 22:12:20

回答

2

MySQL支持多表UPDATE語法與連接,但不像你在做什麼。您顯示的語法可能適用於Microsoft SQL Server,但不適用於MySQL。

這應該工作:

UPDATE Farming f INNER JOIN DataTable d ON f.name = d.name 
SET f.GoldLabor = f.GoldPerUnit/(d.LaborYieldA + d.LaborYieldB); 
+0

它確實謝謝你,我之前更喜歡這種語法,因爲我說明我將與第一次合作,然後我用它。我需要更多關注我正在使用的查詢「引擎」。 – Juan 2014-09-23 22:13:09

+0

因爲多表UPDATE不在標準的SQL規範中,所以MySQL和Microsoft都不是錯的。兩家供應商都在做這個標準的擴展。 – 2014-09-23 22:15:58

0

試試這個:

UPDATE farming as f 
INNER JOIN DataTable d ON f.name = d.name 
    SET f.GoldLabor = f.GoldPerUnit/(DataTable.LaborYieldA + DataTable.LaborYieldB) ; 

SQLFiddle