【问题标题】:Deleting completely identical duplicates from db从 db 中删除完全相同的重复项
【发布时间】:2021-06-01 21:46:50
【问题描述】:

我们的数据库中有一个表,其中包含完全复制了许多行的复制数据。因为 id 也是重复的,所以我们无法仅选择重复项。我尝试使用限制仅删除 1,但尝试使用限制时 redshift 给出了语法错误。

有什么想法可以删除具有完全相同信息的两行中的一行吗?

【问题讨论】:

    标签: sql amazon-redshift


    【解决方案1】:
    1. 使用 select distinct 创建新表。然后截断并复制数据,或者删除原始表并将新表重命名为原始名称:
    create table t2 as select distinct * from t;
    truncate t;
    insert into t from select * from t2;
    drop table t2;
    
    1. 向列添加具有唯一值的列。 identity(seed, step) 看起来很有趣。

    【讨论】:

    • 谢谢,是的,这是一种选择。我有点担心,因为该表有 5.32 亿行
    • 是的,我想,添加了第二个选项
    • 第二个选项查询会是什么样子?我从未使用过row_number()。它适用于红移吗?
    • 或者只是使用我使用的任何语言获得一些任意递增的数字?
    • 是的,您可以在应用程序代码中执行此操作。见docs.aws.amazon.com/redshift/latest/dg/r_WF_ROW_NUMBER.html
    猜你喜欢
    • 1970-01-01
    • 2017-09-16
    • 2020-07-27
    • 2014-03-10
    • 1970-01-01
    • 2020-11-09
    • 2021-04-30
    • 1970-01-01
    • 2020-02-08
    相关资源
    最近更新 更多