我有一个包含这些列的emp
表
emp_id f_name l_name salary dept_id
----------------------------------------------------
100 Steven King 24000 90
101 Neena Kochhar 17000 50
102 Lex De Haan 17000 90
103 Alexander Hunold 9000 60
现在我有t_emp
表,其中包含以下列:
f_name l_name salary dept_id
-------------------------------------------
Steven King 24000 null
Neena Kochhar 17000 null
Lex De Haan 17000 null
Alexander Hunold 9000 null
假设最近在此处添加了dept_id
列。
我想将t_emp.dept_id
列更新为与emp.dept_id
列相同。
我怎么能这样做?
当我在insert into
下面查询时,我收到错误消息:
无法插入NULL(“GAURAV”。“T_EMP”。“LAST_NAME”)
insert into t_emp(dept_id)
select dept_id
from emp;
如何根据t_emp
表在emp
表中执行此单列更新?
答案 0 :(得分:1)
假设名字和姓氏提供表格之间的匹配,那么你可以使用这样的相关子查询:
update t_emp te
set dept_id = (select e.dept_id
from emp e
where e.f_name = te.f_name and e.l_name = te.l_name
);
如果这很重要,您也可以添加salary
等值。
请注意,实际存储列并不重要。您可以使用join
:
select . . ., e.dept_id
from t_emp te join
emp e
on e.f_name = te.f_name and e.l_name = te.l_name;
通常最好将这些信息保存在一个地方,然后使用join
来获取正确的信息。