В нем описывается ситуация, когда вам приходится иметь дело с огромным количеством данных, которое невозможно для group by.
Простым решением было бы следующее:
DELETE FROM foo
WHERE id NOT IN (SELECT min(id) --or max(id)
FROM foo
GROUP BY hash)
Где hash - это то, что дублируется.
Ответ 2
delete from table
where not id in
(select max(id) from table group by [duplicate row])
Это случайное (максимальное значение) выбор, какую строку нужно сохранить.
Если у вас есть aggre whit this, пожалуйста, предоставьте более подробную информацию
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)
Ответ 4
delete from table t1
where rowid > (SELECT min(rowid) FROM table t2 group by
t2.id,t2.name );