课后作业中,运行如下代码为什么只会删除KING的下属,KING不会被删除呢?

课后作业中,运行如下代码为什么只会删除KING的下属,KING不会被删除呢?

delete e1 
from t_emp e1 join t_emp e2 on e1.mgr = e2.empno 
where e2.ename = "KING" or e1.ename="KING";

正在回答 回答被采纳积分+1

登陆购买课程后可参与讨论,去登陆

1回答
好帮手慕小小 2022-08-17 10:18:54

同学你好,t_emp表中KING没有mgr:

https://img1.sycdn.imooc.com//climg/62fc4d950918490708830557.jpg

表连接后查询出的e1表的此条数据不会被查询出来,故最终删除时KING不会被删除:

https://img1.sycdn.imooc.com//climg/62fc4e0309b031de05920632.jpg

select
	e1.empno ,e1.ename ,e1.mgr ,e2.empno ,e2.ename
from
	t_emp e1
join t_emp e2 on
	e1.mgr = e2.empno
where
	e2.ename = "KING"
	or e1.ename = "KING";

https://img1.sycdn.imooc.com//climg/62fc4e81093b239805720391.jpg

祝学习愉快~

  • 提问者 王小east #1

    这样使用左外链接是不是就可以了呀

    delete e1 
    from t_emp e1 left join t_emp e2 on e1.mgr = e2.empno 
    where e2.ename = "KING" or e1.ename="KING";


    2022-08-17 10:25:50
  • 好帮手慕小小 回复 提问者 王小east #2

    同学你好,是的,使用left join是可以的哦。

    https://img1.sycdn.imooc.com//climg/62fc52e8090668cc05660417.jpg

    祝学习愉快~

    2022-08-17 10:31:29
问题已解决,确定采纳
还有疑问,暂不采纳

恭喜解决一个难题,获得1积分~

来为老师/同学的回答评分吧

0 星
请稍等 ...
意见反馈 帮助中心 APP下载
官方微信

在线咨询

领取优惠

免费试听

领取大纲

扫描二维码,添加
你的专属老师