使用cte在oracle中运行delete命令以删除重复项会导致ora-00928错误



我正在运行以下查询以从表中删除重复项,但它给出了以下错误:

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 中,从表中删除重复行有很多更复杂的方法

相关内容

最新更新