题解 | #将所有获取奖金的员工当前的薪水增加10%#

将所有获取奖金的员工当前的薪水增加10%

http://www.nowcoder.com/practice/d3b058dcc94147e09352eb76f93b3274

写出更新语句,将所有获取奖金的员工当前的(salaries.to_date='9999-01-01')薪水增加10%
(emp_bonus里面的emp_no都是当前获奖的所有员工)

create table emp_bonus (
emp_no int 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));

建立一个合成表,利用join 语句,实现将salariesemp_bonusemp_no 作为key进行联结,这样新建立的表就是将有奖金的员工号从工资表中筛选出来。

UPDATE salaries AS s
JOIN emp_bonus AS b
ON s.emp_no = b.emp_no
SET salary = 1.1*salary
WHERE salaries.to_date='9999-01-01'

子查询方法,主要在salaries表中进行相应的操作,最后在子查询中联结emp_bonus

UPDATE salaries
SET salary = 1.1*salary
WHERE salaries.to_date='9999-01-01'
    and salaries.emp_no in (SELECT emp_no FROM emp_bonus)
全部评论

相关推荐

点赞 收藏 评论
分享
牛客网
牛客企业服务