我想用来自其他 table 数据的数据更新 table emp_appointment

I want to update table emp_appointment with data from other table data

我有两个 table,名为 emp_appointmentemployeesEmployees 有 2 列名为 EMPLOYEE_ID1SUBSID_ACCOUNT_IDX 和 table emp_appointment 也有 2 列名为 dep_idEMPLOYEE_ID1 我想使用列 SUBSID_ACCOUNT_IDXemployees table 的数据更新 table emp_appointmentdep_id 两者都具有相同的 ID,所以我写了这段代码但没有用

DECLARE  
   EMP_id EMPLOYEES.EMPLOYEE_ID1%TYPE;  
   SUBSID_ID EMPLOYEES.SUBSID_ACCOUNT_IDX%TYPE;
 
   CURSOR C_EMP is  
      SELECT EMPLOYEE_ID1, SUBSID_ACCOUNT_IDX FROM EMPLOYEES WHERE SUBSID_ACCOUNT_IDX =  EMPLOYEE_ID1 ;  
BEGIN  
   OPEN C_EMP;  
   LOOP  
      FETCH C_EMP into EMP_id,SUBSID_ID ;
      UPDATE EMP_APPOINTMENT
  SET DEP_ID = SUBSID_ID
WHERE EMPLOYEE_ID1= SUBSID_ID; 
      EXIT WHEN C_EMP%notfound;      
      
END LOOP;  
CLOSE C_EMP;  
END;

需要大师的帮助

你可以使用这个:

MERGE INTO emp_appointment e
    USING employees. Employees h
    ON (h.EMPLOYEE_ID1= e.SUBSID_ID)
  WHEN MATCHED THEN
    UPDATE SET e.DEP_ID = h.SUBSID_ACCOUNT_IDX ;

并将其合并为语法:

MERGE INTO table1
  USING table_reference h
  ON (conditions)
  WHEN MATCHED THEN
    UPDATE SET table1.column1 = h.value1, table1.column2 = h.value2
    

首先你应该不要这样做,除非dep_id id 是外键的一部分。你所做的只是复制数据,这不是一个好主意。它使您暴露于数据不一致,当 dep_id 包含员工中不存在的值时会发生什么。相反,您应该只加入表和来自员工的 select subsid_account_idx。但是如果你坚持那么只使用一个更新。

update emp_appointment  ea 
    set dep_id = (select subsid_account_idx 
                    from employees e 
                   where e.employee_id1 = ea.employee_id1
                 );