Sql ORA-00928:缺少选择关键字:使用更新

Sql ORA-00928:缺少选择关键字:使用更新,sql,oracle,Sql,Oracle,我收到ORA-00928:使用“更新”和“使用”时缺少选择关键字错误 这是一个错误 with wr_double as (select...) update work_request r set r.name = r.name || '_old' where exists (select 1 from wr_double wd where wd.name = r.name and wd.wr_id = r.id) 但这很好用 with wr_double as (select...)

我收到ORA-00928:使用“更新”和“使用”时缺少选择关键字错误

这是一个错误

with wr_double as
(select...)

update work_request r 
set r.name = r.name || '_old'
where exists 
(select 1 from wr_double wd
where wd.name = r.name and wd.wr_id = r.id)
但这很好用

with wr_double as
(select...)

select * from work_request r 
where exists 
(select 1 from wr_double wd
where wd.name = r.name and wd.wr_id = r.id)
此外,如果我将with中的子查询放在更新的主体中,它也可以正常工作

update work_request r 
set r.name = r.name || '_old'
where exists 
(select 1 from 
(select 
wr.name, 
wr.id as wr_id, 
dup_wr.count,
d.id as d_id, 
d.create_date
from 
(select...) wd
where wd.name = r.name and wd.wr_id = r.id)

我能不能以这种方式将“with”与“update”一起使用?

您必须以下面的方式写入,因为CTE是选择而不是更新的一部分

update work_request 
set name = name || '_old'

   where exists (
      with wr_double as
         (select...)
      select 1 from wr_double wd  wd.name = work_request.name and wd.wr_id = work_request.id
     );

@Hopper——文件上说fallingdog所做的是允许的;但这是因为它是MySQL文档,而不是Oracle RDBMS。在Oracle中,CTE只被允许(包括子查询中的CTE)。@Zaynul-就是这样!谢谢