Oracle更新查询不起作用

use*_*625 0 oracle oracle11g

我有一个ORACLE查询,不适用于此查询.

UPDATE emp a set a.Enq_Status = 'PROGRESS' 
where exists (select * from emp  a, Data b   
         WHERE a.SA_Enq_Status is NULL 
           and a.EQ_Status = 'ACTIVATED' 
           and a.Activation_Return_Code = 0 
           and a.Alert_Code > 0 
           and a.User_Id = b.User_Id 
           and (b.Is_Associate is NULL or b.Is_Associate = 0)  
           and (b.Stk_Schd is NULL)
           and (b.Stk_Dis_Amt is NULL)
);
Run Code Online (Sandbox Code Playgroud)

我的问题是我想多发更新表中的记录EMP(A)到状态"PROGRESS'.But执行这个查询在a.Enq_status所有记录是changes.Please帮我this.Updation时不correct.Please帮助我在这

Oll*_*lie 5

您已在更新查询和子查询中指定了表emp,Oracle将这些视为单独的表.您需要一个相关的子查询:

UPDATE emp a
   set a.Enq_Status = 'PROGRESS'   
 where exists (select 'X'                   
                 from Data b                   
                WHERE a.SA_Enq_Status is NULL                    
                  and a.EQ_Status = 'ACTIVATED'                    
                  and a.Activation_Return_Code = 0                    
                  and a.Alert_Code > 0                    
                  and a.User_Id = b.User_Id                    
                  and (b.Is_Associate is NULL or b.Is_Associate = 0) 
                  and (b.Stk_Schd is NULL)
                  and (b.Stk_Dis_Amt is NULL)); 
Run Code Online (Sandbox Code Playgroud)

您可能只需要更新emp表而不需要子查询,但是如果链接到where子句中的Data表...