我正在运行以下查询以从表中删除重复项,但它给出了以下错误:
with cte as (select name,address,designation, row_number() over(partition by name,address,designation order by name) rn from emp)
delete from cte where rn <>1;
select * from emp;
错误:ORA-00928:缺少SELECT关键字
如何解决此问题?
您不能从CTE或内联视图中删除。
我一直使用的:
delete emp
where rowid in
( select lag(rowid) over (partition by name,address,designation order by name)
from emp );
在Oracle 中,从表中删除重复行有很多更复杂的方法