PostgreSQL 删除重复项

标签 postgresql

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

表格看起来像这样

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

我想编写一个删除第 3 行或第 4 行的选择查询。

最佳答案

不需要中间表:

delete from df1
where ctid not in (select min(ctid)
                   from df1
                   group by first_column);

如果您要从一个大表中删除很多行,使用中间表的方法可能更快。


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

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

或者干脆

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

关于PostgreSQL 删除重复项,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39928704/

相关文章:

mysql - 哪个 FOSS RDBMS 用于地理空间数据?

postgresql - 带引号的 NULL 值使 PostgreSQL COPY 命令失败

sql - 具有空值并使用 "!="过滤的 postgres 列

postgresql - 如何根据同一表中其他列的更改更新列值,而表中没有任何主键列

sql - 如何使行的值在两列中唯一?

ruby-on-rails - 创建一个数组,其中包含同时创建的不同销售额 Ruby on Rails

SQL按同一列中的多个项目进行过滤

postgresql - 如何使用第三方库将 .aar 文件部署为服务(在 WSO2 应用程序服务器中)

node.js - 我们可以使用 postgresql 的解析服务器吗

python - 如何过滤域数据python opnerp 7?