是否可以在单个查询中编写两个具有两个条件的更新函数?
Is it possible to write two UPDATE functions with two conditions in a single query?
我想要实现的是单个查询来更新这两个值。 如果可能的话。
我有一个名为 employee 的 table,其中 3 列是 工资,城市和员工
我已经完成了需要做的事情,
我需要做的是:
- 城市 1:更新月收入 <800 的 +15% 员工的当前工资。
- 城市 2:更新月收入 <800 的 +18% 员工的当前工资。
city
salary
employees
city1
650
employee1
cit2
700
employee2
我的两个独立查询是:
#1
UPDATE employee
SET salary= salary+ (salary* 15 / 100)
WHERE city= 'city1' AND salary<=800;
#2
UPDATE employee
SET salary= salary+ (salary* 18 / 100)
WHERE city= 'city2' AND salary<=800;;
您可以使用 case
表达式:
UPDATE employee
SET salary = salary * (1 + CASE WHEN city = 'city1' THEN 15 ELSE 18 END) / 100
WHERE city IN ('city1', 'city2') AND salary <= 800;
我想要实现的是单个查询来更新这两个值。 如果可能的话。
我有一个名为 employee 的 table,其中 3 列是 工资,城市和员工
我已经完成了需要做的事情,
我需要做的是:
- 城市 1:更新月收入 <800 的 +15% 员工的当前工资。
- 城市 2:更新月收入 <800 的 +18% 员工的当前工资。
city | salary | employees |
---|---|---|
city1 | 650 | employee1 |
cit2 | 700 | employee2 |
我的两个独立查询是:
#1
UPDATE employee
SET salary= salary+ (salary* 15 / 100)
WHERE city= 'city1' AND salary<=800;
#2
UPDATE employee
SET salary= salary+ (salary* 18 / 100)
WHERE city= 'city2' AND salary<=800;;
您可以使用 case
表达式:
UPDATE employee
SET salary = salary * (1 + CASE WHEN city = 'city1' THEN 15 ELSE 18 END) / 100
WHERE city IN ('city1', 'city2') AND salary <= 800;