4.10 用其他表中的值更新

本文介绍了一种使用相关子查询更新表中特定记录的方法。通过表new_sal中的数据来更新emp表中的工资和佣金字段,其中涉及到了子查询和连接操作。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

问题:

要用一个表中的值来更新另外一个表中的行。例如,在表new_sal中保存着某个特定员工的新工资.

在表new_sal中,deptno为关键字。要用表new_sal中的值更新表emp中相应员工的工资,条件是emp.deptno与new_sal.deptno相等,将匹配记录的emp.sal更新为new_sal.sal,将emp.comm更新为new_sal.sal的50%。

解决方案:
在表new_sal和emp之间做链接,用来查找comm新值并带给update语句。像这样通过关联子查询进行更新的情况十分常见;另一种方法是创建视图(创建视图或内联视图,视数据库支持而定),然后更新这个视图。

使用相关的子查询来设置表emp中的sal和comm值,同样使用相关的子查询判别表emp中哪些行需要被更新:

update emp e 
    set (e.sal,e.comm)  = (select ns.sal,ns.sal/2 from new_sal ns 
                                    where ns.deptno = e.deptno)
where exists(select null from new_sal ns 
            where ns.deptno = e.deptno)

转载于:https://www.cnblogs.com/liang545621/p/7518755.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值