2017-01-23 135 views
1

我想在我的數據庫更新特定的列(使用MSSQL)SQL更新和INNER JOIN

我已經寫了一個查詢返回已值,但這個問題我不能更新其他表與來自(超過一行)生成的值我試圖使用一個變量來聲明它們,然後更新表,但問題它返回多個值,所以我不知道如何更新表使用這些值。

我的選擇查詢:

SELECT SUM(_Items.MagParam1) + SUM(_Items.MagParam2) AS Test11 
FROM _Char 
INNER JOIN _Inventory 
    ON _Char.CharID = _Inventory.CharID 
INNER JOIN _Items 
    ON _Inventory.ItemID = _Items.ID64 
WHERE _Inventory.Slot BETWEEN 1 AND 13 AND _Inventory.ItemID > 0 
GROUP BY [_Char].[CharName16],[_Char].[CurLevel],[_Char].[CharID] 

所以這個查詢每CharID我有返回值,我想更新_Char所有行與它的生成值從以前的查詢。

在此先感謝=)

回答

1

假設CharId是獨一無二的,我會做這樣的事情:

update c 
    ? = cc.test11 -- ? is the column to be updated 
    from _Char c JOIN 
     (SELECT c.CharID, SUM(i.MagParam1) + SUM(i.MagParam2) AS Test11 
      FROM _Char c INNER JOIN 
       _Inventory i 
       ON c.CharID = i.CharID INNER JOIN 
       _Items it 
       ON i.ItemID = it.ID64 
      WHERE i.Slot BETWEEN 1 AND 13 AND i.ItemID > 0 
      GROUP BY c.CharID 
     ) cc 
     ON c.CharID = cc.CharID; 

如果你需要的所有三列(CharName16CurLevelCharID)來定義一個唯一的行,然後將它們包括在SELECT,GROUP BYON子句中。

+0

不,我只需要CharID。但是,試圖運行該查詢。 – Crepitus

+0

像魅力一樣工作,你救了我......非常感謝你<3 – Crepitus