老师,我用外连接这样规范嘛

老师,我用外连接这样规范嘛

#删除员工king和他的直接下属员工信息

DELETE e

FROM t_emp e LEFT JOIN (SELECT empno,ename FROM t_emp e1 WHERE e1.ename="KING") t

ON e.mgr=t.empno

WHERE e.ename="KING";


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

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

3回答
_D_D_ 2020-03-11 23:55:16

删除员工king和他的直接下属员工信息

内连接解法(老师的):

DELETE e
FROM temp e
JOIN (SELECT empno FROM t_emp WHERE ename='KING') t 
ON e.mgr=t.empno OR e.empno=t.empno

外连接解法:

DELETE e
FROM t_emp e
LEFT JOIN (SELECT empno FROM t_emp WHERE ename='KING') t ON e.mgr=t.empno
WHERE t.empno IS NOT NULL OR e.ename='KING'


一个小技巧,麻烦的语句,现用查询语句试试,看看查出来的表长什么样子,再改成 UPDATE 或 DELETE。

好帮手乔木 2020-02-27 10:51:39

同学你好:

左外连接是查询的是左表的所有内容,如果不符合条件的字段为空,所以删除时是将所有的记录全部删除,内连接则删除的是符合条件的记录。

如果我解决了同学的问题,请采纳!学习愉快^_^。

提问者 qq__8359 2020-02-26 21:00:41

问题发错了 ,

DELETE e

FROM t_emp e LEFT JOIN (SELECT empno FROM t_emp WHERE ename="KING") t

ON e.mgr=t.empno OR e.empno=t.empno;

为什么用外连接就全删掉了?

  • _D_D_ #1
    你 LEFT JOIN 肯定全删啊,左表数据全都在。
    2020-03-11 23:50:31
问题已解决,确定采纳
还有疑问,暂不采纳

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

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

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

在线咨询

领取优惠

免费试听

领取大纲

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