在採訪中,我被問到一個關於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