根据条件逻辑更新 table 列值
Update table column values based on conditional logic
我有 table 这样的:
name | salary
Tom | 10000
Mary | 20000
Jack | 30000
Lisa | 40000
Jake | 60000
我需要一个更新查询来根据它包含的值更新工资列。
工资需要增加:
- 5000 表示 10000 到 15000 之间的值
- 7000 表示 15000 到 20000 之间的值
- 8000 表示 20000 到 30000 之间的值
- 10000 表示 40000 到 60000 之间的值
像这样:
UPDATE YourTable
SET salary = CASE
WHEN salary > 10000 AND salary <= 15000 THEN salary + 5000
WHEN salary > 15000 AND salary <=20000 THEN salary + 7000
.
.
.
END
这应该有效:
UPDATE T
SET T.Salary += CASE
WHEN T.salary BETWEEN 10000 AND 15000 THEN 5000
WHEN T.salary BETWEEN 15000 AND 20000 THEN 7000
WHEN T.salary BETWEEN 20000 AND 30000 THEN 80000
WHEN T.salary BETWEEN 40000 AND 60000 THEN 10000
ELSE 0
END
FROM YourTable AS T
尝试使用 CASE statement within the UPDATE 命令
UPDATE
[yourtablename]
SET
salary =
CASE
WHEN salary BETWEEN 10000 AND 15000 THEN salary + 5000
WHEN salary BETWEEN 15000 AND 20000 THEN salary + 7000
WHEN salary BETWEEN 20000 AND 30000 THEN salary + 8000
WHEN salary BETWEEN 40000 AND 60000 THEN salary + 10000
ELSE salary
END
只需将 UPDATE
语句与包含所需逻辑的 CASE
语句一起使用:
UPDATE SalaryTable
SET Salary =
(CASE WHEN Salary BETWEEN 10000 AND 14999 THEN Salary + 5000
WHEN Salary BETWEEN 15000 AND 19999 THEN Salary + 7000
WHEN Salary BETWEEN 20000 AND 29999 THEN Salary + 8000
WHEN Salary BETWEEN 40000 AND 59000 THEN Salary + 10000
ELSE Salary
END)
我使用了 BETWEEN
,它计算 大于或等于 和 小于或等于 ,因此像 14999
这样的值。
此外,您在 30000
和 40000
之间存在差距,但没有发现,但我假设这是因为它是虚拟数据。
参考:
我有 table 这样的:
name | salary
Tom | 10000
Mary | 20000
Jack | 30000
Lisa | 40000
Jake | 60000
我需要一个更新查询来根据它包含的值更新工资列。
工资需要增加:
- 5000 表示 10000 到 15000 之间的值
- 7000 表示 15000 到 20000 之间的值
- 8000 表示 20000 到 30000 之间的值
- 10000 表示 40000 到 60000 之间的值
像这样:
UPDATE YourTable
SET salary = CASE
WHEN salary > 10000 AND salary <= 15000 THEN salary + 5000
WHEN salary > 15000 AND salary <=20000 THEN salary + 7000
.
.
.
END
这应该有效:
UPDATE T
SET T.Salary += CASE
WHEN T.salary BETWEEN 10000 AND 15000 THEN 5000
WHEN T.salary BETWEEN 15000 AND 20000 THEN 7000
WHEN T.salary BETWEEN 20000 AND 30000 THEN 80000
WHEN T.salary BETWEEN 40000 AND 60000 THEN 10000
ELSE 0
END
FROM YourTable AS T
尝试使用 CASE statement within the UPDATE 命令
UPDATE
[yourtablename]
SET
salary =
CASE
WHEN salary BETWEEN 10000 AND 15000 THEN salary + 5000
WHEN salary BETWEEN 15000 AND 20000 THEN salary + 7000
WHEN salary BETWEEN 20000 AND 30000 THEN salary + 8000
WHEN salary BETWEEN 40000 AND 60000 THEN salary + 10000
ELSE salary
END
只需将 UPDATE
语句与包含所需逻辑的 CASE
语句一起使用:
UPDATE SalaryTable
SET Salary =
(CASE WHEN Salary BETWEEN 10000 AND 14999 THEN Salary + 5000
WHEN Salary BETWEEN 15000 AND 19999 THEN Salary + 7000
WHEN Salary BETWEEN 20000 AND 29999 THEN Salary + 8000
WHEN Salary BETWEEN 40000 AND 59000 THEN Salary + 10000
ELSE Salary
END)
我使用了 BETWEEN
,它计算 大于或等于 和 小于或等于 ,因此像 14999
这样的值。
此外,您在 30000
和 40000
之间存在差距,但没有发现,但我假设这是因为它是虚拟数据。
参考: