Выполнение нескольких обновлений в одном запросе в таблице базы данных доступа

В моей базе данных Access 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. Есть ли способ обновить все коды, каждый на другое новое значение, в одном запросе?


person Udesha    schedule 28.07.2017    source источник
comment
Пожалуйста, покажите образцы данных и ожидаемый результат. На ваш текущий вопрос нет ответа.   -  person Tim Biegeleisen    schedule 28.07.2017
comment
Моя таблица — tblCustomerInfo, где поле, которое я хочу отредактировать, — это customer_code. У меня есть старые коды, такие как 101 103 106 и т. Д. ... до 25 номеров, которые мне нужно обновить 122 321 433 по отдельности. Код обновления, который я написал, был - UPDTAE tblCustomerInfo.   -  person Udesha    schedule 28.07.2017
comment
Моя таблица доступа — tblCustomerInfo, где поле, которое я хочу отредактировать, — это customer_code. У меня есть старые коды, такие как 101 103 106 и т. Д. ... до 25 номеров, которые мне нужно обновить 122 321 433 по отдельности. Код обновления, который я написал, был: UPDTAE tblCustomerInfo set customer_code = 122, где customer_code = 103; но это хорошо только для отдельного кода. но мне нужно запустить запрос, который изменяет все коды соответственно на их новые коды. благодарю вас.   -  person Udesha    schedule 28.07.2017
comment
Перефразированный вопрос с дополнительной информацией из комментариев   -  person Simple Lime    schedule 29.07.2017


Ответы (1)


Создайте таблицу, например, CustomerCodes с двумя полями oldcode и newcode, и добавьте все значения. Затем запустите запрос на обновление следующим образом:

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);

По моему опыту, существует ограничение на количество пар, которые вы можете иметь в операторе switch, хотя я никогда не удосужился точно узнать, каково это ограничение - похоже, оно не задокументировано.

person Jonathan Willcock    schedule 29.07.2017