用于更新多行数据的SQL查询

时间:2018-01-07 17:30:33

标签: sql-server tsql sql-update

我现在遇到了麻烦。我根本不熟悉SQL,但对于我的私人项目,我正在使用与游戏相关的数据库,我必须从列{{1}编辑表[Data]的{​​{1}}列。来自表[_RefScrapOfPackageItem]

但问题是我有多个项目需要更新,并不是每个项目都有相同的[Dur_U]值。例如,我在表[_RefObjItem]中搜索类似[Dur_U]的商品代码,并使用ITEM_CH_TBLADE_01_C_RARE列搜索表[_RefObjCommon]中的商品的[Link](其中表示链接是项目的ID)。之后,我从_RefObjItem表中获取[ID],现在我想将其放入[_RefObjItem]列中[Dur_U]列,其中[_RefScrapOfPackageItem]列是ItemCode {{1}但是有很多不同的项目代码,每个项目代码都有一个自己的[Data]

这是我正在使用的SQL代码,我可以同时编辑1个项目代码,更新每个项目需要很长时间。我希望有人可以帮助我使SQL查询适用于[RefItemCodeName]语句。

我希望使用ItemCode ITEM_CH_TBLADE_01_C_RARE“搜索”每个项目(当然会产生超过1个结果)

[Data]

1 个答案:

答案 0 :(得分:0)

declare @ItemCode varchar(256) = 'ITEM_CH_%_01_A';
update _RefScrapOfPackageItem
set Data = (
    select i.Dur_U
    from _RefObjCommon as c inner join _RefObjItem as i
        on i.ID = c.Link
    where l.CodeName128 = _RefScrapOfPackageItem.RefItemCodeName
)
where RefItemCodeName like @ItemCode;

很多人会让你使用SQL Server的update...from,这是我检查过的非标准SQL。此版本将从子查询的非标量结果中获益或抛出错误。顺便说一下,在更新的表上使用别名也是非标准的。