小编典典

Oracle:将CTE与update子句一起使用

sql

我可以在oracle数据库中使用公用表表达式进行更新吗?

我在ORA-00928: missing SELECT keyword尝试时遇到错误:

with average as (SELECT avg(salary) FROM instructor)
update instructor
               set salary = case
                   when salary <= average then salary * 1.05 
                   else salary * 1.03                                     
               end

阅读 183

收藏
2021-04-14

共1个答案

小编典典

由于average salary仅是一个 标量值, 您可以做

update instructor
   set salary = case
       when salary <= (select avg(t.salary) from instructor t) then salary * 1.05 
       else salary * 1.03                                     
   end

在这种情况下,Oracle首先 计算平均值 (例如1234.4567),然后执行 更新

2021-04-14