我正在尝试使用子查询将数据emp_danil
从dname
列插入表中。
我有这个查询:
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 |
+--------+------------+----------+
查询后的表:
+------+--------+-------------+
| DATA | DEPTNO | DNAME |
+------+--------+-------------+
| ... | 10 | ACCOUNTING |
| ... | 20 | RESEARCH |
| ... | 30 | SALES |
+------+--------+-------------+
错误 :
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
Synax来获取名称。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句