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

您好,请问在这个sql中,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_id) >= 2) as t2 on t1.goods_name = t2.goods_name where t1.goods_id > t2.goods_id;

这个语句是例子中得例子,也可以执行成功,但是where t1.goods_id > t2.goods_id;有点儿看不太懂~去除重复只能通过id大小判断嘛?还有别的写法可以分享嘛?

正在回答

3 回答

这里因为只有主键约束,所以删除重复的方法只有从主键约束上着手才对。如果这里有唯一约束,那么可能有其他的方法来删除重复,这是我个人的理解。

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

17 | Mac Pro MD878CH/A 专业级台式电脑
      |
18 |  HMZ-T3W 头戴显示设备
    |
19 | 商务双肩背包
     |
20 | X3250 M4机架式服务器 2583i14
       |
23 |  LaserJet Pro P1606dn 黑白激光打印机

这是原表经过 GROUP BY 查询的的记录 不显示重复的,所以ID21和ID22被隐藏, 因为在原表中 ID 是18 和19的商品有重复记录 所以会一次排到ID是21 和22(不过经过GROUP BY 修饰不显示了),因为21和22 是重复的记录 并且是在ID18与ID19 之后排下去的,所以 我们就选择了  t1.goods_id>t2.goods_id  这个区间就是重复的记录 如果不加的话 系统会认为只要 t1和t2之间名字一样的记录包扣重复的名字 会全部删除  加了这个条件  系统会 只删除 重复的记录  明白了吗?

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

http://blog.csdn.net/anya/article/details/6407280  感觉这个写法看起来更容易理解一下,不过貌似原理都是一样的,就是把id更大的记录删除。

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

举报

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

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

进入课程

您好,请问在这个sql中,where条件没太明白~

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