删除部分字段重复数据

jlds0123 2008-08-29 12:38:24
表 T1

id(主键) A B C D E
1 aa dd vv ni hao
2 cc ff gg ma neng
3 kk dd vv liao ren


T1中B,C字段第一条和第三条有重复,如何删除保留一条
...全文
98 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
bwu851 2008-08-29
  • 打赏
  • 举报
回复

delete X
from T1 X
inner join T1 Y on X.B = Y.B and X.C = Y.C
where X.id > Y.id


没经测试....LZ自己测试一下吧.
dawugui 2008-08-29
  • 打赏
  • 举报
回复
--其他请参见:

在几千条记录里,存在着些相同的记录,如何能用SQL语句,删除掉重复的呢?谢谢!
1、查找表中多余的重复记录,重复记录是根据单个字段(peopleId)来判断
select * from people
where peopleId in (select peopleId from people group by peopleId having count(peopleId) > 1)

2、删除表中多余的重复记录,重复记录是根据单个字段(peopleId)来判断,只留有rowid最小的记录
delete from people
where peopleId in (select peopleId from people group by peopleId having count(peopleId) > 1)
and rowid not in (select min(rowid) from people group by peopleId having count(peopleId )>1)

3、查找表中多余的重复记录(多个字段)
select * from vitae a
where (a.peopleId,a.seq) in (select peopleId,seq from vitae group by peopleId,seq having count(*) > 1)

4、删除表中多余的重复记录(多个字段),只留有rowid最小的记录
delete from vitae a
where (a.peopleId,a.seq) in (select peopleId,seq from vitae group by peopleId,seq having count(*) > 1)
and rowid not in (select min(rowid) from vitae group by peopleId,seq having count(*)>1)

5、查找表中多余的重复记录(多个字段),不包含rowid最小的记录
select * from vitae a
where (a.peopleId,a.seq) in (select peopleId,seq from vitae group by peopleId,seq having count(*) > 1)
and rowid not in (select min(rowid) from vitae group by peopleId,seq having count(*)>1)

比方说在A表中存在一个字段“name”,而且不同记录之间的“name”值有可能会相同,
现在就是需要查询出在该表中的各记录之间,“name”值存在重复的项;
Select Name,Count(*) From A Group By Name Having Count(*) > 1

如果还查性别也相同大则如下:
Select Name,sex,Count(*) From A Group By Name,sex Having Count(*) > 1
dawugui 2008-08-29
  • 打赏
  • 举报
回复
delete from t1 where id not in (select max(id) from t1 group by b ,c)
delete from t1 where id not in (select min(id) from t1 group by b ,c)
dawugui 2008-08-29
  • 打赏
  • 举报
回复
delete from t1 where id not in (select max(id) from t1 group by b ,c)
CN_SQL 2008-08-29
  • 打赏
  • 举报
回复

delete a
from t1 a
where exists(
select *
from t1
where b = a.b
and c = a.c
and id > a.id)

34,590

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server相关内容讨论专区
社区管理员
  • 基础类社区
  • 二月十六
  • 卖水果的net
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧