我想用来自其他 table 数据的数据更新 table emp_appointment
I want to update table emp_appointment with data from other table data
我有两个 table,名为 emp_appointment
和 employees
。 Employees
有 2 列名为 EMPLOYEE_ID1
和 SUBSID_ACCOUNT_IDX
和 table emp_appointment
也有 2 列名为 dep_id
和 EMPLOYEE_ID1
我想使用列 SUBSID_ACCOUNT_IDX
中 employees
table 的数据更新 table emp_appointment
列 dep_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
);
我有两个 table,名为 emp_appointment
和 employees
。 Employees
有 2 列名为 EMPLOYEE_ID1
和 SUBSID_ACCOUNT_IDX
和 table emp_appointment
也有 2 列名为 dep_id
和 EMPLOYEE_ID1
我想使用列 SUBSID_ACCOUNT_IDX
中 employees
table 的数据更新 table emp_appointment
列 dep_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
);