关于将符合条件的员工调到其他不知编号的部门的问题
#将没有部门的员工,SALES部门底薪低于2000的员工都调到OPERATIONS部门
#重点1 不知道OPERATIONS部门的部门编号 (再次链接一个表但是不写关联条件不使其合并,使其变成两个无关的表)
#重点2 OPERATIONS部门下面没有员工 (用右外连接链接另一个部门表)
update t_emp e left join t_dept d on e.deptno = d.deptno right join t_dept d1
set e.deptno
where e.deptno is null or (d.dname = "SALES" and e.sal < 2000)
and d1.dname = "OPERATIONS"
请问老师,我使用老师教的两个方法合并起来将符合条件的员工调到不知编号的部门里,为什么会报错呢
相关截图:
尝试过的解决方式:
#上面的方法报错,用update链接子查询试验
update t_emp e left join t_dept d on e.deptno = d.deptno right join
(select deptno from t_dept where dname = "SALES") t
set e.deptno =t.deptno
where e.deptno is null or (d.dname = "SALES" and e.sal < 2000)
请问老师,我再次使用update链接子查询的方法还是报错
相关截图:
请问怎样才能正确的实现这个功能呢,我错在哪里呢
正在回答 回答被采纳积分+1
同学你好,1、同学使用了两个连接,则右连接是需要连接添加的,则建议进行添加(如:on e.deptno = d1.deptno)。并想要修改e.deptno字段的值,也需要进行设置(如:set e.deptno = ##(要修改的值))。
update t_emp e left join t_dept d on e.deptno = d.deptno right join t_dept d1 on e.deptno = d1.deptno set e.deptno = ##(要修改的值) where e.deptno is null or (d.dname = "SALES" and e.sal < 2000) and d1.dname = "OPERATIONS"
2、同学使用了两个连接,则右连接是需要连接添加的,则建议进行添加(如:on e.deptno = t.deptno)
update t_emp e left join t_dept d on e.deptno = d.deptno right join (select deptno from t_dept where dname = "SALES") t on e.deptno = t.deptno set e.deptno =##(要修改的值) where e.deptno is null or (d.dname = "SALES" and e.sal < 2000)
3、在sql语句中左右连接连接的是一个表,如果连接条件一样的话,则并不需要重复连接,同学可以去除右连接。参考代码如下所示:
update t_emp e left join t_dept d on e.deptno = d.deptno set e.deptno = ##(要修改的值) where e.deptno is null or (d.dname = "SALES" and e.sal < 2000)
祝学习愉快!
相似问题
登录后可查看更多问答,登录/注册
恭喜解决一个难题,获得1积分~
来为老师/同学的回答评分吧
0 星