我已经搜索了一个解决方案,但还没有找到一个有效的解决方案......
我正在尝试根据另一列中的不同值更新列中的多个值。例如:
If status = F05 then statusID = 987
If status = F12 then statusID = 12957
我试过这个没有成功:
UPDATE myTable
SET statusID = CASE status
WHEN 'F05' THEN 987
WHEN 'F12' THEN 12957
END
有数千个需要更新,所以当然,我想在一个更新查询中运行它。
我错过了什么?我做错了什么?
谢谢!
答案 0 :(得分:7)
在访问权限中,您可以使用SWITCH
功能。 CASE声明不起作用。
UPDATE myTable
SET statusID =
SWITCH
( [status] = 'F05', 987,
[status] = 'F12', 12957)
但是,如果你有太多的项目,你可能想要创建一个数据看起来像
的映射表OldStatus | NewStatus
---------------------
F05 | 987
F12 | 12957
然后执行以下
UPDATE
myTable
INNER JOIN Mapping ON myTable.Status = Mapping.OldStatus
SET
myTable.Status = Mapping.NewStatus;