Объединение двуз запросов Update

zhuseynov
Дата: 27.11.2015 10:01:39
Здравствуйте,

Никак не получается объединить два запроса UPDATE

Допустим у меня есть два запроса.

Первый:
UPDATE Table SET [City] = 'Moscow'
WHERE (([City])='Москва')

Второй:
UPDATE Table SET [City] = 'Rome'
WHERE (([City])='Рим')

Вопрос: Как сделать так, чтобы эти два запроса выполнялись в одном запросе?

Буду очень признателен за помощь.
__Michelle
Дата: 27.11.2015 10:20:06
UPDATE Table 
SET City = IIf(City='Москва','Moscow',IIf(City='Рим','Rome',<а если ни то, ни другое, что ставить???>))
__Michelle
Дата: 27.11.2015 10:22:37
Если для остальных значений не надо делать замену, то так
UPDATE Table 
SET City = IIf(City='Москва','Moscow',IIf(City='Рим','Rome',City))
\\\\
Дата: 27.11.2015 11:43:07
UPDATE [Table] 
SET City = Switch([City]='Москва','Moscow',[City]='Рим','Rome');
А так?
Дата: 27.11.2015 12:22:26
UPDATE Table 
SET City = IIf(City='Москва','Moscow','Rome') where City in ('Москва','Рим')
Akina
Дата: 27.11.2015 13:37:48
zhuseynov
Как сделать так, чтобы эти два запроса выполнялись в одном запросе?

Если хотите сделать правильно - создайте таблицу Replaces(ReplaceWhat varchar, ReplaceTo varchar). Заполните её данными, для приведённого примера это
ReplaceWhat ReplaceTo
Москва Moscow
Рим Rome

и выполните простой двутабличный запрос на обновление:
UPDATE [Table], [Replaces]
SET [Table].[City] = [Replaces].[ReplaceTo]
WHERE [Table].[City] = [Replaces].[ReplaceWhat]

И при этом будет совершенно пофиг, одна такая пара на замену или два десятка.
__Michelle
Дата: 27.11.2015 14:19:04
Если ввести таблицу соответствия 18481329,
то может оказаться, что UPDATE не потребуется,
ведь значение на нужном языке всегда можно получить запросом.