微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

PostgreSQL删除重复项

我正在研究postgres查询以从表中删除重复项.下表是动态生成的,我想编写一个select查询,如果第一行有重复值,它将删除记录.

该表看起来像这样

Ist col  2nd col
 4        62
 6        34
 5        26
 5        12

我想写一个select查询,删除第3行或第4行.

解决方法

不需要中间表:

delete from df1
where ctid not in (select min(ctid)
                   from df1
                   group by first_column
                   having count(*) > 1);

如果要从大表中删除许多行,则使用中间表的方法可能更快.

如果您只想获取一列的唯一值,可以使用:

select distinct on (first_column) *
from the_table
order by the_table;

或者干脆

select first_column,min(second_column)
from the_table
group by first_column;

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。

相关推荐