有时候DB2建表时不设置主键,就可能存在脏数据,例如:两条一样数据重复存在,这时候就需要将重复记录删除,然后留下一条记录。
CREATE TABLE TB_01(ID INT ,NAME VARCHAR(100)); ----插入重复数据 INSERT INTO TB_01 VALUES(1,'jack');
插入数据后,结果如下图:
第一种删除方法:(重复数据较少的情况下)
SELECT ROWID,TB_01.* FROM TB_01
先查询出rowid,然后以rowid为条件删除
DELETE FROM TB_01 WHERE ROWID IN (X'05000000000000000000816506000000',X'06000000000000000000816506000000',X'07000000000000000000816506000000')
第二种删除:(数据量比较大的情况)
DELETE FROM (SELECT id,NAME,row_number() over(PARTITION BY ID,NAME ORDER BY ID,NAME) AS row_num FROM TB_01) A WHERE A.row_num>1
这种删除方式比较好,没有使用rowid那么麻烦。