Я знаю, как увеличить / уменьшить значение в столбце.
Тип значения - INT(11)
Команда:
UPDATE table SET value = value - 1 WHERE id = 1
Но когда значение достигает «0», оно продолжает уменьшаться.
Вопрос: Как уменьшить до нуля, чтобы я не получил значение (-1) в столбце?
Спасибо за ваш код / идеи / предложения
4 ответа
Просто используйте условное выражение:
UPDATE table
SET value = value - 1
WHERE id = 1 AND value > 0;
Добавьте его в предложение where:
UPDATE table SET value = value - 1 WHERE (id = 1) AND (value > 0)
Как только значение достигнет 0, оно больше не будет обновляться, потому что предложение where
исключит эту запись из обновления.
Вы можете добавить к своему предложению where вот так:
UPDATE table
SET value = value - 1
WHERE id = 1 and value >= 1
Вы можете использовать CASE
.
UPDATE table SET value = CASE WHEN value = 1 THEN value = value - 1
ELSE value
END
WHERE id = 1
CASE
может быть плохим выбором, так как если вы получили INDEX
в столбце value
, вероятно, будет возвращено меньше строк, меньше строк будет обновлено = гораздо меньше операций ввода-вывода = лучшая производительность
Похожие вопросы
Новые вопросы
mysql
MySQL — это бесплатная система управления реляционными базами данных (RDBMS) с открытым исходным кодом, которая использует язык структурированных запросов (SQL). НЕ ИСПОЛЬЗУЙТЕ этот тег для других БД, таких как SQL Server, SQLite и т. д. Это разные БД, которые используют свои собственные диалекты SQL для управления данными. В вопросе всегда указывайте точную версию сервера. Версии 5.x сильно отличаются по своим возможностям от версий 8+.
UPDATE table SET value = value - 1 WHERE id = 1 AND value > 0
?