Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/77.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/oracle/10.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql 如何在insert into中使用子查询?_Sql_Oracle_Subquery - Fatal编程技术网

Sql 如何在insert into中使用子查询?

Sql 如何在insert into中使用子查询?,sql,oracle,subquery,Sql,Oracle,Subquery,我试图使用子查询从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 | +------+--------+-------+ |

我试图使用子查询从
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  |
+--------+------------+----------+
查询后的表格:

+------+--------+-------------+
| DATA | DEPTNO |     DNAME   |
+------+--------+-------------+
| ...  |   10   | ACCOUNTING  |
| ...  |   20   | RESEARCH    |
| ...  |   30   | SALES       |
+------+--------+-------------+
错误:

ORA-01400:无法将NULL插入(“学生”、“EMP_DANIL”、“EMPNO”)


我想您需要
更新

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

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

您的查询对我来说没有意义。我想知道您是想要
插入
查询(创建新记录)还是
更新
(修改现有记录)。样本数据和预期结果将有助于更好地理解您的问题。样本数据和预期输出??应该很清楚,您只是试图填充
emp_danil.dname
列,而存在其他一些具有
notnull
约束的列。
INSERT
表示“创建新行”<代码>更新
表示“更改现有行中的列值”。