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

最后一句WHERE的作用问题

如图,第一次我根据老师的操作,在最后一句WHERE那块,t1表删除id值大于t2,后来想干脆把t1和t2重复的ID名字都删掉吧,结果把WHERE那句去掉,就把全表的内容清空了,按道理来说不应该是只删除t1和t2(由于子查询,只返回2行)相同的列,应该再次删除2行么?求解为什么会都删了。

https://img1.sycdn.imooc.com//5ac39bf1000101b407750641.jpg

https://img1.sycdn.imooc.com//5ac39bf200013a5207650638.jpg


正在回答

3 回答

用的左外连接,你想一下不加where的话t1表的列是全部加进去了的,只是在连接条件下t2表如果没有的话就会设置为NULL,所以会全部删除了,如果是用内连接就是查询到t1和t2相同的列,像上面说的:(明显的亲,你还没理解inner join和left join的区别)

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

可以先看看不加where条件的select语句,看看会删除哪些数据

==

SELECT *  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 ; 

(明显的亲,你还没理解inner join和left join的区别)

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

补充一下,这个practice6是我复制的原表,已经被我删除一次了,,

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

举报

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

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

进入课程

最后一句WHERE的作用问题

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