DELETE 语句的日常用法讲得挺到位的,尤其是针对ROWID去重那段,思路清晰,代码也不复杂。你如果经常跟ORACLE打交道,这篇小教程还蛮值得收藏的。

DELETE 的标准语法写得比较基础,直接来个例子:DELETE FROM SCOTT.BONUS WHERE ENAME = 'CLARK',这类操作日常挺常见,别忘了加WHERE,不然一锅端哦。

ROWID 去重这块是亮点,思路是:保留ROWID最大的那条,其它的删掉。举个例子:

DELETE FROM SCOTT.BONUS B 
WHERE ROWID < (
  SELECT MAX(ROWID)
  FROM SCOTT.BONUS 
  WHERE BONUS.ENAME = B.ENAME 
  GROUP BY ENAME 
  HAVING COUNT(*) > 1
);

逻辑还挺巧,用ROWID做唯一标识,这在 Oracle 里还蛮常用的。

你要是想进一步理解ROWID或搞清楚怎么查重、去重,下面这些扩展文章也都挺有料的:

如果你平时维护Oracle数据库、又老遇上表里重复数据的问题,可以收藏这篇教程,操作思路挺实用。