两种方法解决SQL48

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

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

方法1:连接查询(先join两张表)

update salaries as s join emp_bonus as e on s.emp_no=e.emp_no
set salary=salary*1.1
where to_date='9999-01-01'

方法2:子查询(两次select)

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

比较:
推荐使用连接查询(JOIN)
连接查询不需要创建+销毁临时表,因此速度比子查询快。

全部评论
我还是第一次见在update的时候join(强)
5
送花
回复
分享
发布于 2021-09-07 16:11
为啥不直接update salaries set salary=salary*1.1 where to_date='9999-01-01'
1
送花
回复
分享
发布于 2021-12-01 17:36
秋招专场
校招火热招聘中
官网直投
update join那种为啥不通过这题啊?
点赞
送花
回复
分享
发布于 2022-03-18 19:23
方法一的问题,更新了表salaries join emp_bounus;没有更新表salaries;问一哈楼主,多谢
点赞
送花
回复
分享
发布于 2022-05-06 16:27
update salaries a set salary=salary*1.1 where to_date='9999-01-01' and exists (select 10001 from emp_bonus b where a.emp_no=b.emp_no)
点赞
送花
回复
分享
发布于 2022-12-02 16:19 广东
但是实际上公司一般不会给修改权限= =
点赞
送花
回复
分享
发布于 2023-12-18 20:57 重庆

相关推荐

81 6 评论
分享
牛客网
牛客企业服务