需求:
刪除wfd_procs_nodes_rwk表中,huser_id、dnode_id、rwk_name字段值相同的記錄,如果有多條,只保留一條。
SQL:
DELETE FROM wfd_procs_nodes_rwk t
WHERE t.rowid > (SELECT MIN(t1.rowid)FROM wfd_procs_nodes_rwk t1WHERE t.huser_id = t1.huser_idAND t.dnode_id = t1.dnode_idAND t.rwk_name = t1.rwk_name
);
SQL解析:
- 子查詢:?SELECT MIN(t1.rowid)用于為每組相同的huser_id,?dnode_id,?rwk_name找到最小的ROWID。ROWID是Oracle中每行的唯一標識符。
- DELETE語句: 刪除ROWID大于最小ROWID的記錄,這樣就只保留每組的第一條記錄。