Informix数据库技巧之删除掉表中重复的记录

假设“keycol”字段的值唯一,而且没有对表进行分片,并且没有其它的人正在删除"sometable"中的记录,你可以执行如下的SQL:

CODE:

delete from sometable as a  

where rowid <> (select min(rowid) from sometable where keycol = a.keycol)
如果这个表使用表分片,rowid不存在,你还可以用如下的方法:

CODE:

BEGIN WORK;  

SELECT DISTINCT * FROM Table INTO TEMP Temp1;  

DELETE FROM Table WHERE 1 = 1;  

INSERT INTO Table SELECT * FROM Temp1;  

COMMIT WORK;  
对于规模较小或中等的表,并且你有足够的存储空间来存储整个的临时表的时候,这种方法通常十分有效。