我正在尝试通过子查询将数据从'dname'列插入'emp_danil'表中。我有下一个查询:
INSERT INTO emp_danil (dname)
SELECT dept.dname
FROM dept, emp_danil demp
WHERE dept.deptno = emp_danil.deptno;
查询前的表
+------+--------+-------+
| DATA | DEPTNO | DNAME |
+------+--------+-------+
| ... | 10 | NULL |
| ... | 20 | NULL |
| ... | 30 | NULL |
+------+--------+-------+
'部门'表
+--------+------------+----------+
| DEPTNO | DNAME | LOC |
+--------+------------+----------+
| 10 | ACCOUNTING | NEW_YORK |
| 20 | RESEARCH | DALLAS |
| 30 | SALES | CHICAGO |
+--------+------------+----------+
错误:
ORA-01400:无法将NULL插入(“ STUDENT”。“ EMP_DANIL”。“ EMPNO”)]
我认为您想要update
:
update emp_danil e
set dname = (select d.dname from dept d where d.deptno = e.deptno);
就是说,您不应两次存储dname
。它只能在dept
表中。您可以使用deptno
和适当的JOIN
语法来获取名称。