Informix Logo


Как мне удалить дубликаты из таблицы?

Предполагается, что уникальные записи будем отбирать используя колонку keycol, таблица не фрагментирована и никто другой не удаляет записи из таблицы, тогда

delete from sometable a
where rowid <> (select min(rowid)
from sometable
where keycol = a.keycol
)

Если таблица фрагментированна, то остается путь предлагаемый johnl@informix.com (Jonathan Leffler)

BEGIN WORK;
SELECT DISTINCT * FROM Table INTO TEMP Temp1;
DELETE FROM Table WHERE 1 = 1;
INSERT INTO Table SELECT * FROM Temp1;
COMMIT WORK;

Это - приемлемое решение для маленьких и средних таблиц, когда Вы имеете достаточно дискового пространства, необходимого для создания временной таблицы.

Informix-FAQ by  David Williams djw@smooth1.demon.co.uk пункт 5.12


Украинская баннерная сеть
 

[Home]

Сайт поддерживается группой пользователей Информикс на Украине.

Hosted by NO-more.