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

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

Команда:

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

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

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

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

5
Ing. Michal Hudak 19 Дек 2014 в 18:20
2
UPDATE table SET value = value - 1 WHERE id = 1 AND value > 0?
 – 
SaschaM78
19 Дек 2014 в 18:22

4 ответа

Лучший ответ

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

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

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

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

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

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

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

UPDATE table 
SET value = value - 1 
WHERE id = 1 and value >= 1
0
Pseudonym 19 Дек 2014 в 18: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 в 18:24
CASE может быть плохим выбором, так как если вы получили INDEX в столбце value, вероятно, будет возвращено меньше строк, меньше строк будет обновлено = гораздо меньше операций ввода-вывода = лучшая производительность
 – 
Gabrielius
19 Дек 2014 в 18:46