删除重复行(不要删除所有重复)
答
尝试本文中描述的步骤:Removing duplicates from a PostgreSQL database。
它描述了一种情况,当你不得不处理大量的数据时,这是不可能的,以至于group by
。
简单的解决办法是这样的:
DELETE FROM foo
WHERE id NOT IN (SELECT min(id) --or max(id)
FROM foo
GROUP BY hash)
哪里hash
是一些被复制。
答
delete from table
where not id in
(select max(id) from table group by [duplicate row])
这是随机的(最大值)选择你需要保留哪一行。 如果您有聚集的东西,请提供更多详细信息
答
最快的是加入同一张表。 http://www.postgresql.org/docs/8.1/interactive/sql-delete.html
CREATE TABLE test(id INT,id2 INT);
CREATE TABLE
mapy=# INSERT INTO test VALUES(1,2);
INSERT 0 1
mapy=# INSERT INTO test VALUES(1,3);
INSERT 0 1
mapy=# INSERT INTO test VALUES(1,4);
INSERT 0 1
DELETE FROM test t1 USING test t2 WHERE t1.id=t2.id AND t1.id2<t2.id2;
DELETE 2
mapy=# SELECT * FROM test;
id | id2
----+-----
1 | 4
(1 row)
的可能重复[如何删除与SQL重复行?(http://*.com/questions/1173963/how-to-delete-duplicate-rows-with-sql) – 2010-09-23 11:08:40
如何具有讽刺意味!大声笑'如何删除重复的可能重复'... – 2012-02-24 21:18:20