Я хотел бы иметь возможность объединить эти три оператора обновления, поэтому мне не нужно запускать их по отдельности. Я бы обычно вводил несколько «продуктов» и несколько «корзин».Можно ли комбинировать эти три оператора обновления?
Идея состоит в том, чтобы иметь возможность обновлять два поля на основе «fieldB», равное < «5» или «fieldB» между «5» и «10» или «fieldB»> «10», без запуска трех отдельных запросов.
Любая помощь очень ценится.
UPDATE table
set fieldA = round(8.7 * fieldA,0),
fieldB = round(8.7 * fieldB,0)
where product in ('APPLE','BANANA')
and basket IN ('BROWN BASKET','RED BASKET','YELLOW BASKET','BLUE BASKET')
and fieldB < '5';
UPDATE table
set fieldA = round(4.3 * fieldA,0),
fieldB = round(4.3 * fieldB,0)
where product in ('APPLE','BANANA')
and basket IN ('BROWN BASKET','RED BASKET','YELLOW BASKET','BLUE BASKET')
and fieldB between '5' and '10';
UPDATE table
set fieldA = round(2.5 * fieldA,0),
fieldB = round(2.5 * fieldB,0)
where product in ('APPLE','BANANA')
and basket IN ('BROWN BASKET','RED BASKET','YELLOW BASKET','BLUE BASKET')
and fieldB > '10';
Какие СУБД вы используете? Я бы предложил использовать оператор CASE, но как это сделать будет зависеть от того, что вы используете - Oracle, SQL Server, MySQL, ... – leanne
Какую базу данных и версию вы используете? mySQL, SQL Server, Postgress и т. д. Каждый из них поддерживает разные уровни ANSI SQL и может иметь различный синтаксис конкретного поставщика – kheld