我正在尝试使用case语句在表上执行非常简单的数据插入,请参阅下文:
begin tran
update tblworkitems
set fkidsupplier = (
case
when idworkitem = 214159 then 50290
when idworkitem = 270370 then 50367
when idworkitem = 225533 then 50453
...
end )
where
fkidtemplateitem = 654 and
fkidsupplier is null
我有大约85个显式值。 idWorkItem是主键,fkidSupplier是外键(匈牙利表示法多吗?)。问题是~350行正在返回。我之前用过类似的事情已经完成了一百万次并且从来没有这样做过。
快速检查确认没有重复(架构应该强制执行此操作):
select idworkitem
from tblworkitems
where fkidtemplateitem = 654
group by idworkitem having count(*) > 1
是的,我理解这些主键的WHERE子句无效。
有什么想法吗?
答案 0 :(得分:1)
使用您拥有的结构,您仍然可以更新符合WHERE
子句中条件的所有记录。对于CASE
中未指定的内容,只需设置NULL
。
您应该做的是在idworkitem
子句中指定要更新的WHERE
的所有记录。