我正在尝试更新数据库中的特定列(使用MSSQL)
我已经编写了一个查询来返回已经存在的值,但问题是我无法使用生成的值更新其他表(多行)我尝试使用变量声明它们然后更新表,但问题是它返回多个值,所以我想知道如何使用这些值更新表。
我的选择查询:
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中的所有行,并使用上一个查询生成的值。
提前致谢=)
答案 0 :(得分: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;
如果您需要所有三列(CharName16
,CurLevel
和CharID
)来定义唯一行,请将其包含在SELECT
,GROUP BY
中和ON
条款。