Получение и изменение поля данных mysql одним запросом

Рейтинг: 0Ответов: 2Опубликовано: 23.03.2015

Приветствую.

Для изменения числового поля сначала запрашиваю данные этого поля, после получения значения делают второй запрос - изменяю, после уменьшения поля на 1. Полагаю можно оптимизировать этот процесс и сделать один запрос, который не будет запрашивать, а потом обновлять, а сразу уменьшит значение на единицу, каким бы оно не было (положительным или отрицательным).

Поизучал информацию о составных запросах, но конкретное решение в голову пока не пришло. Будьте добры, направьте на путь истинный? :)

Ответы

▲ 1Принят

Уменьшать значение в поле можно так:

UPDATE table SET number = number - 1 WHERE id = 5;

Только тут надо иметь в виду, если поле объявлено как UNSIGNED, то если в number будет 0, то будет ошибка. В этом случае можно воспользоваться таким запросом:

UPDATE table set number = IF(number > 0, number - 1, 0) WHERE id = 5;
▲ 1
UPDATE table SET column = column - 1;