为了账号安全,请及时绑定邮箱和手机立即绑定

谁能把这句话详细解释一下:膜拜

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;


正在回答

2 回答

就是对表t1执行删除操作,删除什么呢?删除t1.goods_id比t2.goods_id大的.同一张表中咋既有t1的id又有t2的id,原来前面对这两个表进行了左连接,对于t1中和t2名字相同的项,由于他们满足条件,就进行了连接,这项就有两张表的id了,由于group by是获得排在前面的元素的id,因此前面通过select得到的t2里面元素的id是排在前面的,这里连接后t1中排在后面的重复商品屁股后面也跟了个t2里面的id,很不幸,由于他比t2的id大因此被删除掉了


以上是我琢磨出来的,虽然表达的不是很好,但希望对你有所帮助

1 回复 有任何疑惑可以回复我~
#1

qq_为梦而生_0

谢谢兄弟,我看懂了
2017-05-29 回复 有任何疑惑可以回复我~
#2

慕粉1720382552

这是我看到的最靠谱的回答。赞
2017-09-04 回复 有任何疑惑可以回复我~

从表 tdb_goods 中选取goods_id,goods_name 这两个字段,并且按照goods_name 字段分组,将组中元素大于2的选取出来作为表t2,将t1和t2进行左连接(就是返回t1表的全部内容和t2表中符合条件的记录),连接条件是两个表中的goods_name的值要一样,而且t1的goods_id值要大于t2的goods_id值;最后从这两个表的连接中删除t1。如有错误,还请指正,谢谢~~~

3 回复 有任何疑惑可以回复我~
#1

染红_街道

为啥要左连接,inner链接就删除六条记录 郁闷啊 求解释
2016-07-15 回复 有任何疑惑可以回复我~
#2

侠客岛的含笑 回复 染红_街道

inner只删除相交的
2016-09-30 回复 有任何疑惑可以回复我~

举报

0/150
提交
取消
与MySQL的零距离接触
  • 参与学习       396886    人
  • 解答问题       3353    个

本课程涵盖全部MySQL数据库的基础,学习MySQL数据库的基础知识

进入课程

谁能把这句话详细解释一下:膜拜

我要回答 关注问题
意见反馈 帮助中心 APP下载
官方微信