【问题标题】:access update query sql multiple values访问更新查询sql多个值
【发布时间】:2011-11-29 16:47:23
【问题描述】:

我已经搜索了解决方案,但还没有找到可行的解决方案...

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

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

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

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

谢谢!

【问题讨论】:

  • 您的UPDATE 查询看起来不错。描述“我试过这个但没有成功”。发生了什么?
  • CASE 只能用于 VBA,不能用于 MS Access Query。

标签: sql ms-access sql-update


【解决方案1】:

在访问中,您可以使用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;

【讨论】:

  • 这很好用。我已导出表,使用 Excel 以代码格式连接字段,并将其作为我的更新查询带回。多么节省时间啊!谢谢你的礼物! ~kern
  • 哦,不... :) SWITCH 在我的第一组中效果很好,但是如果我使用超过 15 个项目,它会给出“表达式太复杂”的错误...我该如何执行这个集体?
  • @kern mann Yuck 好吧,您可以尝试映射表方法。查看更新的答案
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2014-03-30
  • 1970-01-01
  • 2022-08-16
  • 1970-01-01
  • 1970-01-01
  • 2011-05-04
  • 2013-05-11
相关资源
最近更新 更多