如何在插入中使用子查询?

13 先生

我正在尝试使用子查询将数据emp_danildname插入表中

我有这个查询:

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适当的JOINSynax来获取名称

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章