在 PostgreSQL 中,您可以使用 UPDATE
语句和 CASE
表达式来根据不同的条件更新同一表中的列
假设我们有一个名为 employees
的表,其中包含以下列:id
、name
和 salary
。现在,我们想要根据员工的年龄更新他们的薪水。我们可以使用以下查询:
UPDATE employees
SET salary = CASE
WHEN age < 30 THEN salary * 1.1
WHEN age >= 30 AND age < 40 THEN salary * 1.05
ELSE salary
END;
在这个例子中,我们根据员工的年龄更新了 salary
列。如果员工的年龄小于 30 岁,薪水将增加 10%;如果员工的年龄在 30 到 40 岁之间,薪水将增加 5%;否则,薪水保持不变。
您还可以根据其他列的值更新同一列。例如,假设我们有一个名为 departments
的表,其中包含以下列:id
、name
和 manager_id
。我们想要将所有属于 "IT" 部门的员工的 manager_id
更新为 1。我们可以使用以下查询:
UPDATE employees
SET manager_id = CASE
WHEN department_id IN (SELECT id FROM departments WHERE name = 'IT') THEN 1
ELSE manager_id
END;
在这个例子中,我们使用了子查询来查找属于 "IT" 部门的员工,并将这些员工的 manager_id
更新为 1。其他员工的 manager_id
保持不变。
领取专属 10元无门槛券
手把手带您无忧上云