2015-11-01 186 views
-2

在采访中,我被问到一个关于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 并持续到表中的最后一个记录。 表中有数十万行。

如何为此创建脚本?

+0

请格式化您的数据。 – qxg

+1

顺便说一句,在哪些dbms中,你被要求写这个查询? – pedram

+0

在SQL Server查询问题被问到。 – Kanchan

回答

2

尝试这样

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 
+0

其中dbms你是否在上面查询? – pedram

+0

谢谢你的回复。但在员工表薪水可能通过改变这种情况下,我需要在查询中添加多少个case语句。 – Kanchan

1

您的描述并没有说要做什么,如果工资超过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; 

希望这会给你一个想法。