在访问数据库表中的单个查询中执行多个更新

时间:2017-07-28 16:24:26

标签: sql ms-access-2016

在我的2016访问数据库中,我有一个表tblCustomerInfo,其中包含字段customer_code。有些旧的customer_code值需要更新为较新的值(例如,customer_code = 103的所有行都应更新为customer_code = 122。)

我可以使用以下查询一次实现customer_code这样的事情:

UPDATE tblCustomerInfo set customer_code = 122 Where customer_code = 103;
UPDATE tblCustomerInfo set customer_code = 433 Where customer_code = 106;
...

但是,我希望避免为每个customer_code运行单独的查询。有没有办法在单个查询中更新所有代码,每个代码都有不同的新值?

1 个答案:

答案 0 :(得分:0)

创建一个表格,例如带有两个字段oldcode和newcode的CustomerCodes,并添加所有值。然后运行如下更新查询:

UPDATE CustomerCodes INNER JOIN tblCustomerInfo 
ON CustomerCodes.OldCode = tblCustomerInfo.Customer_Code 
SET Customers.Customer_Code = [CustomerCodes].[NewCode]; 

替代

如果没有太多要改变,你可以使用这样的开关语句:

UPDATE tblCustomerInfo 
 SET Customer_Code = 
SWITCH(Customer_Code=103,126,
Customer_Code = 106,130,
Customer_Code = 107,133);

根据我的经验,对于switch语句中可以拥有的对的数量有限制,尽管我从来没有想过确切地知道限制是什么 - 它似乎没有记录。