原文地址:

https://blog.csdn.net/yangwenxue_admin/article/details/51742426

https://www.cnblogs.com/springsnow/p/10334469.html

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

****************Oracle 删除表中的重复数据****************

一、重复记录根据单个字段来判断

1、首先,查找表中多余的重复记录,重复记录是根据单个字段(FIELD_CODE)来判断

select * from R_RESOURCE_DETAILS where FIELD_CODE in
(select FIELD_CODE from R_RESOURCE_DETAILS group by FIELD_CODE having count(FIELD_CODE) >)

2、删除表中多余的重复记录,重复记录是根据单个字段(FIELD_CODE)来判断,只留有rowid最小的记录

delete from R_RESOURCE_DETAILS where (FIELD_CODE) in
(select FIELD_CODE from R_RESOURCE_DETAILS group by FIELD_CODE having count(FIELD_CODE) >)
and rowid not in (select min(rowid) from R_RESOURCE_DETAILS group by FIELD_CODE having count(*)>)

二、重复记录根据多个字段来判断

1、查找表中多余的重复记录(多个字段)

select * from R_RESOURCE_DETAILS a where (a.FIELD_CODE,a.DTA_ITEM_NAME) in
(select FIELD_CODE,DTA_ITEM_NAME from R_RESOURCE_DETAILS group by FIELD_CODE,DTA_ITEM_NAME having count(*) > )

2、删除表中多余的重复记录(多个字段),只留有rowid最小的记录

delete from R_RESOURCE_DETAILS a where (a.FIELD_CODE,a.DTA_ITEM_NAME) in
(select FIELD_CODE,DTA_ITEM_NAME from R_RESOURCE_DETAILS group by FIELD_CODE,DTA_ITEM_NAME having count(*) > )
and
rowid not in (select min(rowid) from R_RESOURCE_DETAILS group by FIELD_CODE,DTA_ITEM_NAME having count(*)>)

3、查找表中多余的重复记录(多个字段),不包含rowid最小的记录

select * from R_RESOURCE_DETAILS a
where (a.FIELD_CODE,a.DTA_ITEM_NAME) in
(select FIELD_CODE,DTA_ITEM_NAME from R_RESOURCE_DETAILS group by FIELD_CODE,DTA_ITEM_NAME having count(*) > )
and
rowid not in (select min(rowid) from R_RESOURCE_DETAILS group by FIELD_CODE,DTA_ITEM_NAME having count(*)>)

****************SQLServer 删除表中的重复数据****************

1、查询表中Name 重复的数据
2、有唯一列,通过唯一列最大或最小方式删除重复记录
3、无唯一列使用ROW_NUMBER()函数删除重复记录

1、查询表中Name 重复的数据

select Name from Student group by  Name having count(Name) > 1

2、有唯一列,通过唯一列最大或最小方式删除重复记录

检查表中是否有主键或者唯一值的列,当前可以数据看到ID是唯一的,可以通过Name分组排除掉ID最大或最小的行

delete from Student
where Name in( select Name from Student group by Name having count(Name) > 1) and
ID not in(select max(ID) from Student group by Name having count(Name) > 1 )

执行删除脚本后查询

3、无唯一列使用ROW_NUMBER()函数删除重复记录

如果表中没有唯一值的列,可以通过 来删除重复数据 
重复执行插入脚本,查看表数据,表中没有唯一列值

Delete T From
(Select Row_Number() Over(Partition By [Name] order By [ID]) As RowNumber,* From Student)T
Where T.RowNumber > 1

小知识点

语法:ROW_NUMBER() OVER(PARTITION BY COLUMN ORDER BY COLUMN)
         表示根据COLUMN分组,在分组内部根据 COLUMN排序,而此函数计算的值就表示每组内部排序后的顺序编号(组内连续的唯一的)
         函数“Row_Number”必须有 OVER 子句。OVER 子句必须有包含 ORDER BY
         Row_Number() Over(Partition By [Name] order By [ID])  表示已name列分组,在每组内以ID列进行升序排序,每组内返回一个唯一的序号

执行删除脚本后查询表数据

最新文章

  1. iOS之关于开发的那点破事(一)
  2. IHttpModule在webconfig中的注册
  3. [转载] 读《UNIX网络编程 卷1:套接字联网API》
  4. 在Android中查看和管理sqlite数据库
  5. Android 自定义Android带图片和文字的ImageButton
  6. ViewPager设置 缓存个数、页卡间距、数据更新
  7. navicat for mysql 如何将表ID排序重1开始?
  8. ARCGIS 数据格式
  9. Spring从认识到细化了解
  10. 4.7 Sublime Text3 中配置 Python环境 --之上安装Sublime 3
  11. BZOJ1895Pku3580 supermemo——非旋转treap
  12. Uni2D 入门 -- Atlas转载 http://blog.csdn.net/kakashi8841/article/details/17588095
  13. vue 开发系列(四) vue 使用外部JS
  14. Python 字符串过滤
  15. oracle dblink 查询 tns:无法解析指定的连接标识符
  16. jboos下载地址记录
  17. oracle使用 merge 更新或插入数据
  18. Java8简明学习之Optional
  19. 将一个4X4的数组进行逆时针旋转90度后输出,要求原数组数据随机输入
  20. 从Objective-C到Swift,你必须会的(四)DLog

热门文章

  1. vue中使用proxy配置不同端口和ip接口
  2. OGG学习笔记03
  3. 我要研究一下minio,管理大量的照片
  4. Oracle中undo表空间的切换
  5. ChinaCock扫描控件介绍-使用TCCBarcodeScanner引起app闪退
  6. Java注解【二、Java中的常见注解】
  7. 身份证js正则
  8. 解决PHP中json_encode()不支持中文的替代函数
  9. Twitter的支撑架构:扩展网络与存储并提供服务——架构原则:一次性将事情做对,NFL原则 LSM+B+存储替代cassandra
  10. Java 工具类 IpUtil - 获取本机所有 IP 地址,LocalHost 对应地址 IP