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

问题描述 投票:0回答:1

我正在尝试通过子查询将数据从'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”)]

sql oracle subquery
1个回答
0
投票

我认为您想要update

update emp_danil e
    set dname = (select d.dname from dept d where d.deptno = e.deptno);

就是说,您不应两次存储dname。它只能在dept表中。您可以使用deptno和适当的JOIN语法来获取名称。

© www.soinside.com 2019 - 2024. All rights reserved.