sql 去重 查找并删除重复记录并且只留一条记录

1.支持单条件或者多条件,查找重复记录,语句:

select * from stock a  
where (a.state,a.org_id,a.material_id) 
in  (select state,org_id,material_id from stock 
where state = 1 group by state,org_id ,material_id  having count(*) > 1)  

    其中“a.state”、“a.org_id”、“material_id”,为条件查询,也就是这三个调件相同。

2.删除重复记录并且只留一条记录

delete from stock   
where (org_id,material_id,state) 
in  (SELECT * from 
(select org_id,material_id, state from stock WHERE state = 1 group by org_id,material_id,state having count(*) > 1)
 a) 
and stock_id 
not in (SELECT * from
(select min(stock_id) from stock where state = 1 group by org_id,material_id,state having count(*)>1) b
)

 

  • 2
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值