如何删除postgresql中的重复行
我想删除postgresql中的重复条目。没有唯一的约束,但我想把所有列都考虑在一起,把行看作一个重复。< /P> 表中的列名如下所示: 日期(日期)、姓名(文本)、年龄(整数)、分数(双倍)如何删除postgresql中的重复行,sql,postgresql,Sql,Postgresql,我想删除postgresql中的重复条目。没有唯一的约束,但我想把所有列都考虑在一起,把行看作一个重复。< /P> 表中的列名如下所示: 日期(日期)、姓名(文本)、年龄(整数)、分数(双倍) 我想把所有的列一起考虑,把它看成是一个复制品。如何在Postgresql中实现这一点。假设您的表有两列,您可以使用。 张贴此:- 1) 将此结果插入临时表 2) 从主表中删除数据 3) 将临时表中的数据插入主表 4) 下降温度表 select col1, col2, count(*) as cnt fro
我想把所有的列一起考虑,把它看成是一个复制品。如何在Postgresql中实现这一点。假设您的表有两列,您可以使用。 张贴此:- 1) 将此结果插入临时表 2) 从主表中删除数据 3) 将临时表中的数据插入主表 4) 下降温度表
select col1, col2, count(*) as cnt
from table1
group by col1, col2
having cnt > 1
PostgreSQL分配一个
ctid
伪列来标识每行的物理位置。您可以使用它来标识具有相同值的不同行:
-- Create the table
CREATE TABLE my_table (num1 NUMERIC, num2 NUMERIC);
-- Create duplicate data
INSERT INTO my_table VALUES (1, 2);
INSERT INTO my_table VALUES (1, 2);
-- Remove duplicates
DELETE FROM my_table
WHERE ctid IN (SELECT ctid
FROM (SELECT ctid,
ROW_NUMBER() OVER (
PARTITION BY num1, num2) AS rn
FROM my_table) t
WHERE rn > 1);
你试过什么?你的模式是什么?示例数据是什么?您是否尝试在所有列上使用DISTINCT?您所说的“删除”是什么意思?在查询中或在数据本身中?是否有方法直接从表中删除找到的重复数据?答案中提到的SQL也会这样做。