mysql 左链接删除_多表删除的时候使用左连接?

我知道前面好多人问了这个问题,我也去全部翻阅了,然后还是没能得到答案。实在是不理解~

在这节课4:45处,老师要删除表1内有重复的记录,重复记录里面删掉ID较高的。他的代码是这样的。

******************************************************************DELETE t1 FROM tdb_goods AS t1 LEFT JOIN(SELECT goods_id,goods_name FROM tdb_goods GROUP BY goods_name HAVING count(goods_name) >=2) AS t2 ON t1.goods_name = t2.goods_name WHERE t1.goods_id > t2.goods_id;

************************************************************************

按照我的理解,左连接,是显示左表的全部和右表内符合条件的。在这里如果不加where条件的话,应该是删除了t1整个表的吧。

那加了  WHERE t1.goods_id > t2.goods_id; 之后,对结果进行了筛选。符合条件的应该是,id=20/21/22/23这四条记录,那删除应该也是删除这四条,为什么会变成是只删除了两条呢?

*************************************************************************

如果想要达成结果集内是18/19/21/22的话,应该使用内连接才对,因为内连接仅仅显示符合连接条件的记录。我测试使用内连接,结果也是和老师的一样的。

80d11383af8d9602fc6bf3308639521f.png

所以我的问题是:为什么在这里使用左连接 ?为什么使用了左连接的话不是删除了20/21/22/23这四条记录,而是只删除了21和22?

求大神指点!( >﹏

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值