ORA-01427错误,插入所有行

时间:2015-12-08 10:51:51

标签: sql oracle sql-insert

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

我有3个表:T1有(idA,B)列,B类型日期                  T2带(idC,D)列,D型varchar                  带有(idE,F,G,....)列,F类型日期,G类型varchar,idE(DBsquences),F和G的T3是主键。

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

我的查询:

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

1 个答案:

答案 0 :(得分:2)

如果我理解你的话:

<?php $news = new WP_Query( array( 'posts_per_page' => 999, 'order' => 'ASC' ) ); $previous_post_month = ''; ?>

<?php while ( $news->have_posts() ) : $news->the_post();
    $this_post_month = date( "M",strtotime( the_date( '', '', '', false) )    );
    if( $this_post_month != $previous_post_month)
        echo '<h1>' . $this_post_month . '</h1>';
    ?>
    <div class="testi-archive-list">
        <a href="<?php the_permalink()?>"/> <h2><?php the_title(); ?></h2></a>
    </div>
    <?php $previous_post_month = $this_post_month;
endwhile ?>

如果您从select中插入值,则不需要INSERT INTO T3 (F, G) SELECT (select max(B) from T1), D FROM T2 关键字,但您应该只使用1个查询。它不是有效的条件 - values。您无法在where max(B)中使用群组功能,只能使用WHERE。你应该像HAVING那样做一个条件。如果要选择最大值,只需在max(B) = something

中使用函数max