2012-05-24 61 views
0

我已閱讀了一些關於加入SQL更新的其他問題,但尚未能完成查詢。SQL更新加入錯誤

系統是所有在MySQL(InnoDB表結構)

我們想更新一個表的量將增加基於另一個表2個變量的數量。有跡象表明,需要更新,以確保從第二個表中的變量表進行更新匹配的鑰匙,被檢查的幾個約束

UPDATE AS1
SET as1.amount = as1.amount + (b1.workers * b1.level)
FROM account_stock AS AS1
INNER JOIN建築物爲B1 ON as1.accountID = b1.accountID
INNER JOIN building_seed AS BS1 ON bs1.buildingID = b1.buildingID
WHERE BS1。 stockID = as1.stockID
AND b1.accountID = as1.accountID
和b1.locID = as1.locID
和b1.status =活躍
和b1.gTime> 0

它得到一個錯誤,我不能選擇它。對不起,如果這是一個簡單的問題,我所有的SQL都是自學的,所以我有一些習慣不太好!

+1

看起來@ypercube有答案,但以供​​將來參考它總是有幫助的,以提供錯誤信息以及。 – mellamokb

+0

謝謝@mellamokb - 我會確保下次再添加:) – elzaer

回答

4

UPDATE的MySQL語法不同。沒有FROM

UPDATE 
    account_stock AS as1 
    INNER JOIN building AS b1 ON as1.accountID = b1.accountID 
    INNER JOIN building_seed AS bs1 ON bs1.buildingID = b1.buildingID 

SET as1.amount = as1.amount + (b1.workers * b1.level) 

WHERE bs1.stockID = as1.stockID 
    AND b1.locID = as1.locID 
    AND b1.status = active 
    AND b1.gTime > 0 ; 

    --- removed duplicate : 
    --- AND b1.accountID = as1.accountID 

另外:是active一列或你的意思是寫?:AND b1.status = 'active'

+0

這就是機票!作品一種享受。我代表列名出現一些錯誤,但查詢結構是完美的。 謝謝:) – elzaer