1、查找表中多余的重复记录,重复记录是根据单个字段(peopleId)来判断
select*from people
where peopleIdin (select peopleIdfrom peoplegroupby peopleIdhaving count(peopleId)>1)

2、删除表中多余的重复记录,重复记录是根据单个字段(peopleId)来判断,只留有rowid最小的记录
deletefrom people
where peopleIdin (select peopleIdfrom peoplegroupby peopleIdhaving count(peopleId)>1)
and rowidnotin (selectmin(rowid)from peoplegroup by peopleIdhavingcount(peopleId )>1)

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

4、删除表中多余的重复记录(多个字段),只留有rowid最小的记录
deletefrom vitae a
where (a.peopleId,a.seq)in (select peopleId,seqfrom vitaegroup by peopleId,seqhavingcount(*)>1)
and rowidnotin (selectmin(rowid)from vitae group by peopleId,seqhavingcount(*)>1)

5、查找表中多余的重复记录(多个字段),不包含rowid最小的记录
select*from vitae a
where (a.peopleId,a.seq)in (select peopleId,seqfrom vitaegroup by peopleId,seqhavingcount(*)>1)
and rowidnotin (selectmin(rowid)from vitae group by peopleId,seqhavingcount(*)>1)
(二)
比方说
在A表中存在一个字段“name”,
而且不同记录之间的“name”值有可能会相同,
现在就是需要查询出在该表中的各记录之间,“name”值存在重复的项;
Select Name,Count(*)From A Group By NameHavingCount(*)>1
如果还查性别也相同大则如下:
Select Name,sex,Count(*)From A Group By Name,sexHavingCount(*)>1
(三)
方法一
declare@maxinteger,@idinteger
declare cur_rows cursor localforselect 主字段,count(*)from 表名 group by 主字段havingcount(*)>;1
open cur_rows
fetch cur_rowsinto@id,@max
while@@fetch_status=0
begin
select@max= @max-1
setrowcount@max
deletefrom 表名 where 主字段=@id
fetch cur_rows into@id,@max
end
close cur_rows
setrowcount0

  方法二

  有两个意义上的重复记录,一是完全重复的记录,也即所有字段均重复的记录,二是部分关键字段重复的记录,比如Name字段重复,而其他字段不一定重复或都重复可以忽略。

  1、对于第一种重复,比较容易解决,使用
selectdistinct* from tableName

  就可以得到无重复记录的结果集。

  如果该表需要删除重复的记录(重复记录保留1条),可以按以下方法删除
selectdistinct* into #Tmpfrom tableName
droptable tableName
select*into tableNamefrom #Tmp
droptable #Tmp

  发生这种重复的原因是表设计不周产生的,增加唯一索引列即可解决。

  2、这类重复问题通常要求保留重复记录中的第一条记录,操作方法如下

  假设有重复的字段为Name,Address,要求得到这两个字段唯一的结果集
selectidentity(int,1,1)as autoID, * into #Tmpfrom tableName
selectmin(autoID)as autoID into #Tmp2from #Tmp groupby Name,autoID
select*from #Tmpwhere autoIDin(select autoIDfrom #tmp2)

  最后一个select即得到了Name,Address不重复的结果集(但多了一个autoID字段,实际写时可以写在select子句中省去此列)

(四)查询重复
select*from tablenamewhere idin (
select idfrom tablename
group by id
having count(id)> 1
)

转载于:https://www.cnblogs.com/cl1024cl/p/6205529.html

sql记录去重(SQL查询或者删除表中重复记录)相关推荐

  1. Database之SQLSever:SQL命令实现查询之多表查询、嵌套查询、分页复杂查询,删除表内重复记录数据、连接(join、left join和right join简介及其区别)等案例之详细攻略

    Database之SQLSever:SQL命令实现查询之多表查询.嵌套查询.分页复杂查询,删除表内重复记录数据.连接(join.left join和right join简介及其区别)等案例之详细攻略 ...

  2. 查询和删除表中重复数据sql语句

    查询和删除表中重复数据sql语句 (一) 1.查询表中重复数据.select * from people where peopleId in (select   peopleId  from   pe ...

  3. sql删除表中重复记录_SQL从SQL表中删除重复行的不同方法

    sql删除表中重复记录 This article explains the process of performing SQL delete activity for duplicate rows f ...

  4. SQLServer删除表中重复记录

    sqlserver删除表中的重复数据 SqlServer删除表中重复记录 转载链接:https://www.bbsmax.com/A/1O5Ee12G57/ SqlServer删除表中重复记录 重复记 ...

  5. mysql重复数据只取一条数据_My sql 中删除表中重复记录?只保留一条

    匿名用户 1级 2018-08-20 回答 在几千条记录里,存在着些相同的记录,如何能用SQL语句,删除掉重复的呢 1.查找表中多余的重复记录,重复记录是根据单个字段(peopleId)来判断 sel ...

  6. [转]删除表中重复记录

    我们可能会出现这种情况,某个表原来设计不周全,导致表里面的数据数据重复,那么,如何对重复的数据进行删除呢? 重复的数据可能有这样两种情况,第一种时表中只有某些字段一样,第二种是两行记录完全一样. 一. ...

  7. Oracle如何删除表中重复记录

    1  引言 在对数据库进行操作过程中我们可能会遇到这种情况,表中的数据可能重复出现,使我们对数据库的操作过程中带来读诸多不便,那么怎么删除这些重复没有用的数据呢? 平时工作中可能会遇到当试图对库表中的 ...

  8. oracle 删除表中重复记录,并保留一条

    1.查找表中多余的重复记录,重复记录是根据单个字段(Id)来判断 select * from 表 where Id in (select Id from 表 group byId having cou ...

  9. SQL查询或删除数据库中重复记录

    版权声明:欢迎评论和转载,转载请注明来源. https://blog.csdn.net/zy332719794/article/details/76043309 select * --delete f ...

  10. SQL Delete 语句(删除表中的记录)

    SQL DELETE 语句 DELETE语句用于删除表中现有记录. SQL DELETE 语法 DELETE FROM table_name WHERE condition;   请注意 删除表格中的 ...

最新文章

  1. 2019,商业智能的10大未来趋势
  2. 用Python进行机器学习(附代码、学习资源)
  3. Python学习之==面向对象编程(一)
  4. 数值分析 使用c语言 源码_分析源码,学会正确使用 Java 线程池
  5. Java集合——HashMap、HashTable以及ConCurrentHashMap异同比较
  6. java中修饰符的说明
  7. 20210722-20211010当项目经理积累的管理经验_血泪史_项目管理经验001
  8. GoLand 远程开发配置
  9. 最好用的数据可视化神器,没有之一
  10. Vue3中的父子、子父组件通信
  11. PXE启动错误代码一览表
  12. 汇编语言 masm5与debug命令使用方法 小结
  13. 北京新文化运动纪念馆展出中国古代建筑经典模型
  14. SEO过程中外链的误区
  15. 字节跳动全链路压测(Rhino)的实践
  16. Linux和Ubuntu的区别详解
  17. python 词云 教程
  18. 计算机版音乐教学反思,音乐教学反思(通用3篇)
  19. 终结篇:t5模型结构的阅读
  20. AD domain 环境下VBS自动生成邮件签名

热门文章

  1. maven生命周期入门
  2. LeetCode--026--删除排序数组中的重复项(java)
  3. C语言程序设计:现代方法阅读笔记
  4. 注册表实现欢迎界面的修改
  5. 使用阿里云邮件推送服务架设自己邮件验证与推送体系
  6. ActiveMQ消息队列介绍(转)
  7. 自定义AlertDialog
  8. 读凤凰网经典语句记录一
  9. UpdatePanelAnimation
  10. VMware下Ubuntu 18.04关机后无法上网