删除重复数据

表A中有ID、NAME、CODE字段。要查出NAME、CODE字段重复的数据,重复的记录中,仅保留ID最大的,删除其它重复的数据。
查询需要删除的记录sql如下:
比较笨的SQL:

select *
from test
where id in (select b.id
from test a, test b
where a.name = b.name
and a.code = b.code
group by b.id
having count(b.id) > 1)
and id not in (select max(id)
from test
where id in (select b.id
from test a, test b
where a.name = b.name
and a.code = b.code
group by b.id
having count(b.id) > 1)
group by name, code)

改进后的SQL:

select *
from test t1
where exists
(select 1
from test t2
where t1.code = t2.code
and t1.name = t2.name
and t1.id != t2.id)
and t1.id not in (select max(id) from test group by name, code)
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值