SQL - Redshift删除没有主键的重复行

时间:2016-11-01 01:11:42

标签: sql duplicates amazon-redshift

我有一个很大的红移数据库。 记录没有唯一的密钥。

我想将下面的sql转换为postgresql。

DELETE FROM (
SELECT *,ROW_NUMBER() OVER (partition BY column1, column2, column3) AS rnum
FROM tablename ) t1
WHERE t1.rnum > 1;

执行上面的sql,出现以下错误:

  

亚马逊无效的操作:语法错误在或附近"(&#34 ;;

请:'(。

1 个答案:

答案 0 :(得分:1)

在Postgres中,您可以使用delete from tablename where ctid not in (select min(t2.ctid) from tablename t2 group by column1, column2, column3 ); 执行此操作。这是一个物理标识每一行的系统“列”。

这个想法是:

ctid

我不确定Redshift是否支持{{1}}。但话说回来,尽管有标签,你的问题仍明确是关于Postgres。