2017-07-28 57 views
0

在我访问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一个单独的查询。有没有办法在单个查询中更新所有代码,每个代码都是不同的新值?

+3

请显示样本数据和预期输出。您目前的问题不能回答。 –

+0

我的表是tblCustomerInfo,我要编辑的字段是customer_code。我有101,103,106等旧代码...高达25个数字,我需要它们分别更新122,321,433。我写的更新代码是 - UPDTAE tblCustomerInfo – Udesha

+0

我的访问表是tblCustomerInfo,我要编辑的字段是customer_code。我有101,103,106等旧代码...高达25个数字,我需要它们分别更新122,321,433。我写的更新代码是 - UPDTAE tblCustomerInfo set customer_code = 122 where customer_code = 103;但这仅适用于单个代码。但我需要运行一个查询,将所有代码分别更改为新代码。谢谢。 – Udesha

回答

0

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

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

替代

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

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

还有就是,在我经验,对交换语句中可能有的配对数量进行限制,尽管我从来没有想过要确切地知道限制是什么 - 它似乎没有记录。

相关问题