请你写出更新语句,将所有获取奖金的员工当前的(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),因为联结查询不需要创建+销毁临时表,因此速度比子查询快。
借鉴网友题解分享