请你写出更新语句,将所有获取奖金的员工当前的(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 `salariest` (
`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`));

INSERT INTO emp_bonus VALUES (10001,1);
INSERT INTO salariest VALUES(10001,85097,'2001-06-22','2002-06-22');
INSERT INTO salariest VALUES(10001,88958,'2002-06-22','9999-01-01');

思路:更新语句,要想到updat……set……;同时涉及到两个表的联结;


方法一:联结表

update emp_bonus as e inner join salariest as s on e.emp_no=s.emp_no
set s.salary=(s.salary*1.1)
where to_date='9999-01-01';

方法二:子查询

update salariest
set salary=(salary*1.1)
where to_date='9999-01-01'
and salariest.emp_no=(select emp_no
            from emp_bonus);

注意:推荐使用联结查询(JOIN),因为联结查询不需要创建+销毁临时表,因此速度比子查询快。
借鉴网友题解分享