在采访中,我被问到一个关于sql查询的问题。 查询是员工表数据库相关查询
ID Name Salary
1 emp 1 10000
2 emp 2 20000
3 emp 3 30000
4 emp 4 40000
...
我必须更新员工的工资作为说,如果低于10000增量由500 如果是间为10000〜20000更新通过600 如果是30000更新20000之间由700 并持续到表中的最后一个记录。 表中有数十万行。
如何为此创建脚本?
在采访中,我被问到一个关于sql查询的问题。 查询是员工表数据库相关查询
ID Name Salary
1 emp 1 10000
2 emp 2 20000
3 emp 3 30000
4 emp 4 40000
...
我必须更新员工的工资作为说,如果低于10000增量由500 如果是间为10000〜20000更新通过600 如果是30000更新20000之间由700 并持续到表中的最后一个记录。 表中有数十万行。
如何为此创建脚本?
尝试这样
UPDATE employee
SET Salary=
CASE WHEN Salary < 10000 THEN Salary + 500
CASE WHEN Salary >= 10000 and Salary < 20000 then Salary+600
CASE WHEN Salary >= 20000 and Salary < 30000 then Salary+700
ELSE Salary END
您的描述并没有说要做什么,如果工资超过30000我假设工资是由800在这种情况下更新。有了这个假设,你可以这样做:
SELECT *, (
(Salary<10000)?(Salary+500):(
(Salary>=10000 AND Salary < 20000)? (Salary + 600):(
(Salary>=20000 AND Salary < 30000)? (Salary + 700):
(Salary + 800))
))) AS NewSalary FROM employee;
希望这会给你一个想法。
请格式化您的数据。 – qxg
顺便说一句,在哪些dbms中,你被要求写这个查询? – pedram
在SQL Server查询问题被问到。 – Kanchan