有時候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那么麻煩。