sql - ORA-01427错误,插入到所有行

标签 sql oracle sql-insert

我的查询不断返回 ORA-01427 错误,请问如何解决:

我有 3 个表:T1 包含 (idA,B) 列,B 类型日期 T2 具有 (idC,D) 列,D 类型 varchar T3 包含 (idE,F,G,....) 列,F 类型为 date,G 类型为 varchar,idE(DBsquences),F 和 G 为主键。

我想将T1和T2的数据插入T3

我的查询:

insert into T3 (F, G) values ((select B from T1 where max(B)), ( select D from T2));

我得到:ORA-01427 错误单行子查询返回多行。

如何使用光标执行此操作?

T1:

idA   B   
------------
1     date1      
2     date2  (the max date)     
3     date3 

T2:

idC    D    
----------
1     x       
2     y  
3     z
.     .
.     .
.     .
n     N

Result must be:

T3:

idE    F          G
-----------------------
1     date2       y
2     date2       z
.       .         .
.       .         .
.       .         .
.       .         .
n     date2       N

最佳答案

如果我理解正确的话:

INSERT INTO T3 (F, G)
SELECT  (select max(B) from T1), D
FROM T2

如果您从 select 插入值,则不需要 values 关键字,但您应该只使用 1 个查询。这不是有效条件 - where max(B)。您不能在 WHERE 中使用组函数,只能在 HAVING 中使用。您应该设置一个类似 max(B) = Something 的条件。如果你想选择最大值,你只需使用SELECT

中的函数max即可

关于sql - ORA-01427错误,插入到所有行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34153946/

相关文章:

php - 从mysql数据库获取 parent 姓名

SQL - CASE WHEN 计算不同的值

sql - 从一个表中选择列,而在另一个表中该列为 NULL

c# - 如何从 MVC 中的 View 将变量插入数据库

mysql - SQL 仅重组选定的记录

sql - 通过 Oracle SQL 检索范围内的数字

oracle - hibernate +Oracle+Clob : Content of attributes get switched

mysql - 为什么 mySQL 触发器不保存?

sql字符编码非英文字符

mysql - SQL 导入 PostgreSQL 8.4.20 失败并出现语法错误