MYSQL删除/去掉重复行方法(简单/易懂SQL语句DELETE)

想法很简单,如下:按分组选出不重复address的id,然后删除id不等于这些唯一id的:

delete from windmachine where id not in(select id from windmachine group by address)
但是mysql执行错误:
Error Code : 1093
You can't specify target table 'windmachine' for update in FROM clause
(0 ms taken)
这个错误是说delete 与 update不能有 select。
但是改成这样就ok了:
delete from windmachine where id not in 
   ( select * from 
   (select id from windmachine group by address) b 
   where windmachine.id=b.id 
  


====================
呵呵,是不是很简单。

另外,也可以保留id最大/最小的行(删除其他行):

delete from windmachine where id not in 
   ( select * from 
   (select max(id) as max_id from windmachine group by address) b 
   where windmachine.id=b.max_id 
   )

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值