Oracle数据表保留一条重复数据简单方法

来自:网络
时间:2024-03-31
阅读:
免费资源网 - https://freexyz.cn/

要保留表中的一条重复数据,可以使用以下方法:

  • 使用ROWID:ROWID是Oracle中每一行的唯一标识符。可以使用以下语句来删除重复数据,保留一条:
DELETE FROM your_table
WHERE ROWID NOT IN (
    SELECT MIN(ROWID)
    FROM your_table
    GROUP BY duplicate_columns
);

其中,your_table是表名,duplicate_columns是用于判断重复数据的列。

  • 使用ROW_NUMBER()函数:ROW_NUMBER()函数可以为每一行分配一个唯一的序号。可以使用以下语句来删除重复数据,保留一条:
DELETE FROM your_table
WHERE ROWID IN (
    SELECT rid
    FROM (
        SELECT ROWID as rid, ROW_NUMBER() OVER (PARTITION BY duplicate_columns ORDER BY ROWID) as rn
        FROM your_table
    )
    WHERE rn > 1
);

其中,your_table是表名,duplicate_columns是用于判断重复数据的列。

需要注意的是,在执行删除操作之前,建议先备份数据,以防误操作导致数据丢失。另外,以上方法适用于删除表中的重复数据,保留一条。如果需要保留多条重复数据,可以根据具体需求进行调整。

row_number() over()函数的主要功能是分组排序,实现类似group by + order by的效果

SELECT
    FI.* 
FROM
    ( SELECT T.*, ROW_NUMBER ( ) OVER ( PARTITION BY T.u_name ORDER BY T.insert_time DESC ) RW FROM user_test T ) FI 
WHERE
    FI.RW =1

总结

免费资源网 - https://freexyz.cn/
返回顶部
顶部