sql 查出一张表中重复的所有记录数据

本文详细介绍如何使用SQL查询去除数据表中的重复记录,包括查询所有重复数据、仅展示ID最小的重复记录以及删除除ID最小外的所有重复记录的方法。通过具体SQL语句示例,为数据库管理员和开发者提供实用的去重解决方案。

1.查出所有重复的数据(多列),根据 datetime,staff_num,state

select * from gs_collect_staff a where (a.datetime,a.staff_num,a.state)
 in (select datetime,staff_num,state from gs_collect_staff group by staff_num,datetime,state
  having count(*) > 1 )  order by datetime desc

 

2.查收所有重复的数据(多列),只显示id最小的那个值

select * from gs_collect_staff a where (a.datetime,a.staff_num,a.state)
 in (select datetime,staff_num,state from gs_collect_staff group by staff_num,datetime,state
  having count(*) > 1 )  
  and a.id  in(select min(id)from gs_collect_staff group by staff_num,datetime,state
  having count(*) > 1 )
   order by datetime desc

 

3.删除重复的数据(多列),只保留id最小的那个值

 delete from gs_collect_staff a where (a.datetime,a.staff_num,a.state)
 in (select datetime,staff_num,state from gs_collect_staff group by staff_num,datetime,state
  having count(*) > 1 )  --order by datetime desc
  and a.id not in(select min(id)from gs_collect_staff group by staff_num,datetime,state
  having count(*) > 1 )

 

转:https://www.cnblogs.com/wangfuyou/p/6058169.html

 

转载于:https://www.cnblogs.com/youguess/p/10490532.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值