получить доступ к запросу на обновление нескольких значений sql - PullRequest
5 голосов
/ 29 ноября 2011

Я искал решение, но пока не нашел работающего ...

Я пытаюсь обновить несколько значений в столбце на основе различных значений в другом столбце.Например:

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

Есть тысячи, которые нуждаются в обновлении, поэтому, конечно, я хотел бы запустить это водин запрос на обновление.

Что мне не хватает?Что я делаю не так?

Спасибо!

1 Ответ

7 голосов
/ 29 ноября 2011

При доступе вы можете использовать функцию 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;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...