ORA-01427 错误,插入所有行

ORA-01427 error , insert into all rows

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

我有 3 个表:T1 有 (idA,B) 列,B 类型日期 带有 (idC,D) 列的 T2,D 类型 varchar T3 with (idE,F,G,....)columns, F type date, G type varchar, idE(DBsquences),F 和 G 是 Primary Key.

我想插入T3,来自T1和T2的数据

我的查询:

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

我得到:ORA-01427 错误单行子查询 returns 多于一行。

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

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