两种方法解决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(强)
6 回复 分享
发布于 2021-09-07 16:11
为啥不直接update salaries set salary=salary*1.1 where to_date='9999-01-01'
1 回复 分享
发布于 2021-12-01 17:36
为什么*1.1
点赞 回复 分享
发布于 2024-08-30 14:15 广东
set salary=(salary + salary*10% ) 这样的写法怎么不通过
点赞 回复 分享
发布于 2024-07-20 11:16 江苏
但是实际上公司一般不会给修改权限= =
点赞 回复 分享
发布于 2023-12-18 20:57 重庆
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 广东
方法一的问题,更新了表salaries join emp_bounus;没有更新表salaries;问一哈楼主,多谢
点赞 回复 分享
发布于 2022-05-06 16:27
update join那种为啥不通过这题啊?
点赞 回复 分享
发布于 2022-03-18 19:23

相关推荐

对空六翼:你真幸运,碰见这么好的人,不像我,秋招的时候被室友骗进cx了
实习好累,可以辞职全力准...
点赞 评论 收藏
分享
joecii:如果没有工资,那可能没有工资是这家公司最小的问题了
找实习记录
点赞 评论 收藏
分享
评论
89
6
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务