@(一隻心中無碼的程序員)專欄程序員
- ~
題目描述
將全部獲取獎金的員工當前的薪水增長10%。
create table emp_bonus(
emp_no int not null,
recevied datetime not null,
btype smallint not null);測試
CREATE TABLE salaries
(emp_no
int(11) NOT NULL,salary
int(11) NOT NULL,from_date
date NOT NULL,to_date
date NOT NULL, PRIMARY KEY (emp_no
,from_date
));code
按照正常的邏輯以及以前題目的尿性,要先選出符合條件的 emp_no,即用 INNER JOIN 鏈接 salaries 和 emp_bonus,且用 s.to_date = '9999-01-01' 表示當前薪水,而後再用 UPDATE ... SET ... WHERE ... IN ... 語句來更新表中數據。 UPDATE salaries SET salary = salary * 1.1 WHERE emp_no IN (SELECT s.emp_no FROM salaries AS s INNER JOIN emp_bonus AS eb ON s.emp_no = eb.emp_no AND s.to_date = '9999-01-01') 但又發現題目測試用例沒設置好,emp_bonus裏面的所有 emp_no 都是當前獲獎的全部員工,因而就有了如下簡易答案: UPDATE salaries SET salary = salary * 1.1 WHERE emp_no IN (SELECT emp_no FROM emp_bonus) 誰知道還能繼續投機取巧,估計是OJ系統的問題,將全部 salary 都上漲10%也能經過,因而又有了如下終極版最短答案: UPDATE salaries SET salary = salary * 1.1