--测试数据
/*-----------------------------
select * from tt
-----------------------------*/
id          pid        
----------- -----------
1           1
1           1
2           2
3           3
3           3
3           3

(所影响的行数为 6 行)

首先,如何查询table中有重复记录
select *,count(1) as rownum
from tt
group by id, pid
having count(1) > 1
id          pid         rownum     
----------- ----------- -----------
1           1           2
3           3           3

(所影响的行数为 2 行)

方法一:使用distinct和临时表
if object_id('tempdb..#tmp') is not null
drop table #tmp
select distinct * into #tmp from tt
truncate table tt
insert into tt select * from #tmp

方法二:添加标识列
alter table tt add NewID int identity(1,1)
go 
delete from tt  where exists(select 1 from tt a where  a.newid>tt.newid and tt.id=a.id and tt.pid=a.pid)
go
alter table tt drop column NewID
go

/*注,oracle中由于有伪列rowid则更简单,可以直接用rowid*/
/*
delete from tt  where exists(select 1 from tt a where  a.rowid>tt.rowid and tt.col1=a.col1 and tt.col2=a.col2)
*/

--测试结果
/*-----------------------------
select * from tt
-----------------------------*/
id          pid        
----------- -----------
1           1
2           2
3           3

(所影响的行数为 3 行)

如何删除表中的重复记录?相关推荐

  1. 如何删除表中的重复记录?等等常用SQL语句的积累

    1.如何删除表中的重复记录?(这里指记录的每个字段都要相同) select distinct * into #temp from tab delete tab insert tab select * ...

  2. Oracle 查找并删除表中的重复记录

    案例:一个应用表中的一个字段是主键,向表中插入数据时,先把数据放在临时表中(没有主键)然后再插入应用表. 这时候如果临时表中有重复数据,无论是主键字段businessid有重复,还是一整行有重复都会报 ...

  3. SQL删除表中的重复记录只保留其中一条,最简单的方法:ROW_NUMBER()

    在几千条记录里,存在着些相同的记录,如何能用SQL语句,删除掉重复的呢?. 要求:删除表中多余的重复记录,且保留 id 最小的那一条记录. CREATE TABLE #temp_data( id BI ...

  4. oracle中的rowid--伪列-删除表中的重复内容-实用

    1.rowid是一个伪列,是用来确保表中行的唯一性,它并不能指示出行的物理位置,但可以用来定位行. 2.rowid是存储在索引中的一组既定的值(当行确定后).我们可以像表中普通的列一样将它选出来. 3 ...

  5. 用一条sql语句删除表中所相同记录

    用一条sql语句删除表中所相同记录如下一.具有主键的情况 a.具有唯一性的字段id(为唯一主键) delete table where id not in ( select max(id) from ...

  6. mysql 找表重复数据,mysql 数据表中查找重复记录

    mysql 数据表中查找重复记录 复制代码 代码如下: select user_name,count(*) as count from user_table group by user_name ha ...

  7. Oracle 查看表中重复的记录,以及去除表中的重复记录

    --查看表中重复的记录 select tscw.L_SEC_KEY as L_BOND_KEY ,---债券内码       to_date(twcb.b_info_carrydate,'yyyyMM ...

  8. MySQL 删除表中的数据记录

    文章目录 前言 一.删除表中的数据记录? 1.删除特定数据记录 2.删除所有数据记录 总结 前言 删除数据记录是数据操作中常见的操作,可以删除表中已经存在的数据记录.在MySQL中可以通过DELETE ...

  9. Oracle删除表中的重复数据

    Oracle数据库删除表中的重复数据,只保留其中的一条,以两个字段为例,提供两种方法 ①.直接delete重复的数据 delete from table_name t1 where (t1.col1, ...

最新文章

  1. 2021-08-31 openCV批量读取把 path0 里面的与 path 同名文件(.jpg)提取出来,然后生成.png放进 path1 路径里面
  2. 旋转角度_办公娱乐新神器!这款稳固的创意支架,360°旋转随便换角度
  3. autosys start_mins
  4. mysql5.623 GTID主从复制+半同步复制安装与配置
  5. 前端学习(2903):用vite开发环境
  6. http statusCode 500状态码
  7. 第四篇 做一个用户登录之后查看学员信息的小例子
  8. numpy中的方差、协方差、相关系数
  9. 这四行棘手的C代码背后的概念
  10. 抖音直播预告开通条件是什么?
  11. HuaWei ❀ Radius协议概述
  12. python - 乌龟吃鱼游戏
  13. os 存储器的结构层次
  14. python3.7的idle打不开解决办法_python3.4idle为什么打不开
  15. python 003 __小斌文档 | python 变量
  16. git 裁切_图片裁切.html
  17. java 持久监听blockqueue的变化_Curator目录监听
  18. 一位36岁程序员的困惑
  19. ecc 算法 PHP实现,ECC算法的详细说明
  20. 脑壳疼!到底该不该裸辞?

热门文章

  1. 欧几里得算法与不定方程
  2. 20221219今天的世界发生了什么
  3. 小肩膀网页全能班全套视频解析
  4. stm32读写 DS2431
  5. 【linux】2022年还能用,网易真的是良心啊,网易云音乐linux版本现在还是可以使用的超赞!!官方网的下载地址还可以使用,音乐使用的是qt5进行开发的。
  6. 【翻译】10倍性能提升:优化静态站点——by JonLuca De Caro
  7. 启动Charls报错“The bundled Java installation is broken. Please uninstall and reinstall Charles.”
  8. 【论文合集】2022年11月医学影像期刊论文合集
  9. 计算机必须配置的设备是,CSGO Mengxin必须查看计算机配置和设备选择建议以及经验分享...
  10. Spark 内存管理详解(下):内存管理