#sql-server
#sql-server
Вопрос:
id status
-------------
1 no
2 yes
3 no
4 yes
5 --
когда я обновляю столбец статуса до ‘yes’ с идентификатором 5,
Я хочу получить такие результаты
id status
-------------
1 no
2 no
3 no
4 no
5 Yes
Возможно ли это?
Ответ №1:
Вы можете добиться этого с помощью CASE
инструкции или IIF
функции.
Запрос будет:
UPDATE SampleTable SET [Status] = CASE WHEN Id = @InputValue THEN 'yes' ELSE 'no' END;
или
UPDATE SampleTable SET [Status] = IIF(Id = @InputValue , 'yes', 'no');
Ответ №2:
Мое предложение состоит в том, чтобы иметь несколько инструкций update в транзакции в зависимости от ваших потребностей, для приведенного выше примера у вас будет :
update tableName set status = 'Yes' where id = 5;
update tableName set status = 'no' where id <> 5;
Хороший вариант иметь оба запроса на обновление в транзакции для завершения обоих (либо успешного, либо неудачного)