是否可以在单个查询中编写两个具有两个条件的 UPDATE 函数?

Posted

技术标签:

【中文标题】是否可以在单个查询中编写两个具有两个条件的 UPDATE 函数?【英文标题】:Is it possible to write two UPDATE functions with two conditions in a single query? 【发布时间】:2021-04-14 12:44:53 【问题描述】:

我想要实现的是一个单个查询来更新这两个值。 如果可能的话。

我有一个名为 employee 的表,其中有 3 列 salary城市员工

我已经完成了需要做的事情,

我需要做的是:

城市 1:更新每月收入 城市 2:更新月收入

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;;

【问题讨论】:

【参考方案1】:

您可以使用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;

【讨论】:

以上是关于是否可以在单个查询中编写两个具有两个条件的 UPDATE 函数?的主要内容,如果未能解决你的问题,请参考以下文章

在具有分页的单个模型查询代码点火器中获取具有多个条件的多个连接结果

是否可以在一次条件检查中为两个变量编写条件检查

如何为两个查询条件执行单个 Prepared Statement

如何在 DynamoDB 中的单个属性上查询(getItems)两个条件(不存在 + 某个值)?

如何在 Laravel 的 DB 查询中编写两个 where 条件?

是否可以在 NSPredicate 中使用嵌套的 SUBQUERY?