【389天】我愛刷題系列148(2018.03.01)

@(一隻心中無碼的程序員)專欄程序員

叨叨兩句

  1. ~

SQL習題043

題目描述
將全部獲取獎金的員工當前的薪水增長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
相關文章
相關標籤/搜索