需要帮助删除 Amazon Redshift DB 中的重复行

问题描述 投票:0回答:1

我在 Redshift 中有一个表,其中有一些我需要以某种方式删除的重复行。我想为每个 user_id、级别和类型升级只保留一行。用户每一级只能升级一次。表格示例如下所示:

version  date        timestamp            user_id  level  type
1.0.0    2016-05-10  2016-05-10 14:53:58  1234     13     levelup
1.0.0    2016-05-10  2016-05-10 14:53:25  1234     13     levelup
1.0.0    2016-05-10  2016-05-10 14:52:03  1234     13     levelup
1.0.0    2016-05-10  2016-05-10 14:52:03  1234     13     levelup
1.0.0    2016-05-10  2016-05-10 14:52:03  1234     13     levelup

我已经尝试研究适用于其他数据库的查询,但没有发现任何适用于 Redshift 的查询。使用

TOP
min(timestamp)
,即使我知道有多少重复项,我也无法使用
LIMIT
。我相信使用自连接表也行不通,因为没有什么独特之处可以比较?

有没有不需要我将所有唯一行复制到新表中的解决方案?谢谢!

sql amazon-web-services duplicates row
1个回答
0
投票

可以试试

row_number()
功能吗?

此外,您能否创建一个唯一的 id 列并使用此 id 填充每一行。

DELETE FROM tablename
WHERE id IN (SELECT id
              FROM (SELECT id,
                             ROW_NUMBER() OVER (partition BY  user_id,level,type ORDER BY timestamp) AS rnum
                     FROM tablename) t
              WHERE t.rnum > 1);

http://docs.aws.amazon.com/redshift/latest/dg/r_Examples_of_WF_ROW_NUMBER_WF.html

© www.soinside.com 2019 - 2024. All rights reserved.