美文网首页
Oracle 删除表中某一列重复的记录

Oracle 删除表中某一列重复的记录

作者: silense422 | 来源:发表于2018-10-13 12:35 被阅读0次

    问题:删除 oracle 某一表某一列重复的记录
    例子如下:


    image.png

    表中c1列有重复值 '手输c1',保留其中一项值,可通过 oracle 分析函数根据 'c1' 分组生成序号,删除序号大于1的数据。

    select rowid as rid,c1,row_number() over(partition by c1 order by c4) as seq from test_silense


    image.png

    仔细对比 'c1' 列与 'seq' 例之间的关联,'c1' 列中有重复值的记录会根据时间出现的先后顺序添加序号,那么我们可以把序号不为1的行记录全部删除,得出不重复的行记录
    delete from test_silense where rowid in(
    select rid from (
    select rowid as rid,c1,row_number() over(partition by c1 order by c4) as seq from test_silense
    ) where seq > 1
    )
    执行删除操作后的记录如下:


    image.png

    这个只是我写的示例,大家在操作数据时,一定要先把要操作的表数据给备份一下

    相关文章

      网友评论

          本文标题:Oracle 删除表中某一列重复的记录

          本文链接:https://www.haomeiwen.com/subject/xrroaftx.html