访问更新查询sql多个值

ker*_*ann 5 sql ms-access sql-update

我已经找到了解决方案,但还没找到一个有效的解决方案......

我正在尝试根据另一列中的不同值更新列中的多个值.例如:

If status = F05 then statusID = 987
If status = F12 then statusID = 12957
Run Code Online (Sandbox Code Playgroud)

我试过这个没有成功:

UPDATE myTable
SET statusID = CASE status
   WHEN 'F05' THEN 987
   WHEN 'F12' THEN 12957
END
Run Code Online (Sandbox Code Playgroud)

有数千个需要更新,所以当然,我想在一个更新查询中运行它.

我错过了什么?我究竟做错了什么?

谢谢!

Con*_*rix 7

在访问中,您可以使用该SWITCH功能.CASE语句不起作用.

UPDATE myTable
SET statusID = 
SWITCH 
   ( [status] = 'F05', 987,
     [status] = 'F12', 12957)  
Run Code Online (Sandbox Code Playgroud)

但是,如果您有太多项目,则可能需要创建数据看起来像的映射表

OldStatus | NewStatus
---------------------
F05       | 987
F12       | 12957
Run Code Online (Sandbox Code Playgroud)

然后执行以下操作

UPDATE 
       myTable  
       INNER JOIN Mapping ON myTable.Status  = Mapping.OldStatus
 SET 
        myTable.Status = Mapping.NewStatus;
Run Code Online (Sandbox Code Playgroud)