@ave_code

Как в sqlite не обновлять столбцы, если значение в одном из них уменьшилось?

Друзья, всем привет.
Задачка.
Есть бд.
В бд есть три столбца: имя, фамилия, количество денег в месяц.
Таблица периодически обновляется и надо оставить только максимальное значение в столбце "количество денег в месяц".

Логика:
Скрипт делает запрос по апи.
Выдергивает данные.
Если один параметр, который отвечает за количество денег в столбце выше, чем в бд, то обновляем, а если меньше, то нет.

Есть ли какие-то операторы сравнения в запросах? Сорян, я новичок в бд. Спасибо.
  • Вопрос задан
  • 42 просмотра
Пригласить эксперта
Ответы на вопрос 2
vabka
@vabka
Токсичный шарпист
Можно так:

-- Создаём табличку
CREATE TABLE IF NOT EXISTS employee (id int PRIMARY KEY, name text not null, salary int not null);

-- Для примера две записи
insert into employee (id, name, salary) values (1, 'Иван', 10000);
insert into employee (id, name, salary) values (2, 'Пётр', 20000);

-- Обновляем запись
UPDATE employee set salary = 15000 WHERE id = 1;

-- Обновляем запись с нашим условием - если переданное значение больше того что уже хранится, то вставляем его, иначе оставляем как было
-- "переданное значение" тут =5000
UPDATE employee SET salary = max(salary, 5000) WHERE id = 1;

-- Ну и выбираем результат
SELECT * from employee;


В выводе будет:
1 Иван 15000
2 Пётр 20000


Ну и ещё есть выражение CASE и функция IIF(condition, on_true, on_false).
Ответ написан
Комментировать
rozhnev
@rozhnev
Fullstack programmer, DBA, медленно, дорого
UPDATE employee SET salary = 5000 WHERE id = 1 and salary < 5000;


https://sqlize.online/sql/sqlite3/cf55e5c6df35c323...
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы