Я знаю, как увеличить / уменьшить значение в столбце.

Тип значения - INT(11)

Команда:

UPDATE table SET value = value - 1 WHERE id = 1

Но когда значение достигает «0», оно продолжает уменьшаться.

Вопрос: Как уменьшить до нуля, чтобы я не получил значение (-1) в столбце?

Спасибо за ваш код / ​​идеи / предложения

4
Ing. Michal Hudak 19 Дек 2014 в 18:20

4 ответа

Лучший ответ

Просто используйте условное выражение:

UPDATE table
    SET value = value - 1
    WHERE id = 1 AND value > 0;
7
Gordon Linoff 19 Дек 2014 в 15:22

Добавьте его в предложение where:

UPDATE table SET value = value - 1 WHERE (id = 1) AND (value > 0)

Как только значение достигнет 0, оно больше не будет обновляться, потому что предложение where исключит эту запись из обновления.

0
Marc B 19 Дек 2014 в 15:22

Вы можете добавить к своему предложению where вот так:

UPDATE table 
SET value = value - 1 
WHERE id = 1 and value >= 1
0
Pseudonym 19 Дек 2014 в 15:23

Вы можете использовать CASE.

UPDATE table SET value = CASE WHEN value = 1 THEN value = value - 1
ELSE value
END
WHERE id = 1
0
Alex M. 19 Дек 2014 в 15:24