Oracle删除重复行并保留一行

delete from table
where id in (select id 
             from table  
             group by id 
             having count(*) >1)  
     and rowid not in 
         (select min(rowid) 
         from table 
         group by id 
         having count(*)>1);

以上代码将id重复的行删除只保留一行,先将所有重复id的行选中当做集合A,再选中id重复的行中rowid最小的行当做集合B,之后要删除的内容即A和非B的与。
以上代码常用于给某列加主键但此列有重复数据的列。

posted @   epiphanyy  阅读(110)  评论(0编辑  收藏  举报  
相关博文:
阅读排行:
· winform 绘制太阳,地球,月球 运作规律
· AI与.NET技术实操系列(五):向量存储与相似性搜索在 .NET 中的实现
· 超详细:普通电脑也行Windows部署deepseek R1训练数据并当服务器共享给他人
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 上周热点回顾(3.3-3.9)
历史上的今天:
2022-05-23 LeetCode 面试题58 - II.左旋转字符串
点击右上角即可分享
微信分享提示