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

为什么删除的时候我没叫WHERE 后面的语句导致整个数据表记录都被删除了???

 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;

正在回答

4 回答

t1和t2左连接后实际上是根据连接条件将两张表合并成了一张表

http://img1.sycdn.imooc.com//5ef303500001a6fa09880260.jpg

删除操作实际上是对这张合并后的表进行的,如果不加where条件,表示删除这张表的所有记录。

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

不要看了 越看越乱 他讲课讲不清楚,从第五章开始 就凌乱了 看别的

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

可能是因为左连接   有的数据虽然没有满足条件(t1.goods_name=t2.goods_name) 但数据还是存在的

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;

得到的表大概如下  

t1.goods_id     t1.goods_name     t2.goods_id         t2.goods_name

         1                    商务背包                1                        商务背包

        2                    商务背包                1                          商务背包

        3                    笔记本             (没有数据)            (没有数据)

所以删除的时候就把整张表删了,用右连接应该不会出现这种情况

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

举报

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

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

进入课程

为什么删除的时候我没叫WHERE 后面的语句导致整个数据表记录都被删除了???

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