Ответ 1
Посмотрите БОЛЬШЕ И МЕНЬШЕ.
UPDATE my_table
SET my_column = GREATEST(my_column - 10, 0);
Как найти максимум (или минимум) двух целых чисел в Postgres/SQL? Одно из целых чисел не является значением столбца.
Я приведу примерный сценарий:
Я хотел бы вычесть целое число из столбца (во всех строках), но результат не должен быть меньше нуля. Итак, для начала, у меня есть:
UPDATE my_table
SET my_column = my_column - 10;
Но это может сделать некоторые из значений отрицательными. Я бы хотел (в псевдокоде):
UPDATE my_table
SET my_column = MAXIMUM(my_column - 10, 0);
Посмотрите БОЛЬШЕ И МЕНЬШЕ.
UPDATE my_table
SET my_column = GREATEST(my_column - 10, 0);
Вы хотите встроенный sql case
:
set my_column = case when my_column - 10 > 0 then my_column - 10 else 0 end
max()
является агрегированной функцией и получает максимум строки результирующего набора.
Изменить: oops, не знал о greatest
и least
в postgres. Используйте это вместо.