2016-02-18 4 views
0

У меня есть таблица выглядит следующим образом:Обновление же таблица SQL

id phy 
    0 0 
    1 8 

мне нужно обновить PHY, когда значение вставки превышает существующее значение.

Могу ли я достичь этого в одном запросе?

Я попытался следующие:

UPDATE SET phy = CASE WHEN phy < newValue then newValue end where id = 0; 

Он отлично работает, если это так. IfnewValue меньше, тогда он вставляет нуль. Я не знаю, как установить значение для случая ELSE.

Тогда я подумал, что я должен использовать self join на столе, но я не получил запрос правильно.

ответ

1

Использование:

CASE WHEN phy < newValue THEN newValue ELSE phy END 

Итак, если phy >= newValue, то phy поле остается неизменным.

Следовательно, UPDATE утверждение становится:

UPDATE mytable 
SET phy = CASE WHEN phy < newValue THEN newValue ELSE phy END 
WHERE id = 0; 
+1

Высокий spped показывает ваш опыт. Но SO позволяет мне принимать только через несколько минут. Благодарю. –

Смежные вопросы