【转】SQL删除重复记录,只保留其中一条

简介:

SQL:删除重复数据,只保留一条用SQL语句,删除掉重复项只保留一条在几千条记录里,存在着些相同的记录,如何能用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   peopleName in (select peopleName    from people group by peopleName      having count(peopleName) > 1) and   peopleId not in (select min(peopleId) from people group by peopleName     having count(peopleName)>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)  

6.消除一个字段的左边的第一位:

update tableName set [Title]=Right([Title],(len([Title])-1)) where Title like '村%'

7.消除一个字段的右边的第一位:

update tableName set [Title]=left([Title],(len([Title])-1)) where Title like '%村'

8.假删除表中多余的重复记录(多个字段),不包含rowid最小的记录

 update vitae set ispass=-1 where peopleId in (select peopleId from vitae group by peopleId,seq having count(*) > 1) and seq inselect seq from vitae group by peopleId,seq having count(*) > 1and rowid not in (select min(rowid) from vitae group by peopleId,seq having count(*)>1)    





本文转自秋楓博客园博客,原文链接:http://www.cnblogs.com/rwxwsblog/p/4507425.html,如需转载请自行联系原作者
目录
相关文章
|
存储 SQL 数据库
SQL Server 删除数据库中表数据
SQL Server 删除数据库中表数据
179 0
|
存储 SQL Go
SQL Server 删除数据库所有表和所有存储过程
SQL Server 删除数据库所有表和所有存储过程
119 0
|
SQL 索引
sql做题第十六天(删除记录篇)
• 扩展:在 delete 后加 limit 是个好习惯。原因如下: • 1,delete from 是全表查找的,如果加上limit 时,删除指定的条数后,就会return了。效率提高不少。 • 2,降低写错 SQL 的代价,即使删错了,例如limit 100,也就删除了100条数据,也能通过binlog找回数据 • 3,避免长事务,delete执行时,涉及的行是会加锁,如果删除的数据量大,那业务功能都要不能用了 • 4,加锁都是基于索引的,如果查询字段没有加索引,那会扫描到主键索引上,那么就算查询出来的只有一条记录,也会锁表 • 5,delete数据量大时,容易占用cpu,导致越删除越慢
|
SQL 存储 关系型数据库
RDS For SQL Server删除数据库报错
RDS For SQL Server删除数据库报错
|
SQL 数据库 Python
零基础自学SQL课程 | DELETE 删除语句
今天是SQL课程的第十课。 讲讲DELETE 删除语句,用来删除表中的一条或多条记录。 基本语法:
150 0
零基础自学SQL课程 | DELETE 删除语句
|
SQL 存储 数据库
SQL 基础(二)数据表的创建、约束、修改、查看、删除
SQL 基础(二)数据表的创建、约束、修改、查看、删除
238 0
SQL 基础(二)数据表的创建、约束、修改、查看、删除
|
SQL 数据库
SQL 基础(一)创建、查看、修改、删除数据库
SQL 基础(一)创建、查看、修改、删除数据库
413 0
SQL 基础(一)创建、查看、修改、删除数据库
|
SQL
【如何成为SQL高手】第二关:表记录的插入、更新、删除
【如何成为SQL高手】第二关:表记录的插入、更新、删除
201 0
【如何成为SQL高手】第二关:表记录的插入、更新、删除