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

请问这里的是 left join左外连接 为什么不会把左表都删掉呢? 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;

正在回答

5 回答

我也看不明白啊。。。。为什么是delete t1 呢。为什么不是delete t1.* 呢

0 回复 有任何疑惑可以回复我~

内连接将两个表中满足指定连接条件的记录连接成新的结果集,舍弃所有不满足条件的记录。连接条件会同时过滤两个表的记录信息。

外连接:只过滤一个表,对另一个表不进行过滤


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

Refactor易先生

如果不加where条件的话为什么会删除左表中的所有记录呢
2015-09-13 回复 有任何疑惑可以回复我~

5422b707000123d005000140.jpg

用inner join 效果一样.

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

delete t1 from ....... where t1.goods_id > t2.goods.id;

有where条件限制 只删除连接后结果表中t1.goods_id > t2.goods.id 的t1的数据



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

Refactor易先生

是不是说如果没有where的话还是只删除连接后结果表中的数据呢?但是事实却是把整个左表给删了。。。。求解释。。
2015-09-13 回复 有任何疑惑可以回复我~

这个SQL语句中的子查询语句,查询的结果是重复的记录,整个SQL语句的作用是删除重复的记录,并且通过t1.goods_id>t2.goods_id;这个条件,删除的是重复记录中id较大的那一条记录,所以并不会删除整个左表哦,建议再仔细看看视频的讲解,视频里面对这个语句先进行分解讲解了,讲解很清晰的哟^_^

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

wendyy 提问者

那 left join 感觉好像没有它的意义,感觉好像是用了 inner join的效果啊,请你可以指出我的这个想法的问题吗,非常感谢!
2014-07-21 回复 有任何疑惑可以回复我~
#2

友人M

@jon_zhuang 说的对,我也觉得其实用inner join更合适一点儿。
2014-09-24 回复 有任何疑惑可以回复我~

举报

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

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

进入课程
意见反馈 帮助中心 APP下载
官方微信