update table1 set (field1,field2)= (select field1,field2 from table2 where table2.field3=table1.field3 and rownum=1)

解决方案 »

  1.   

    但是事实上这两个表都是空的...啊
    而且把这条sql语句单独 拿出来执行时没有错误的
    对了,在存储过程中是这样写的execute immediate 'update table1 set (field1,field2)= (select field1,field2 from table2 where table2.field3=table1.field3) '
      

  2.   

    应该是数据的问题,你的table2表中可能重复field3的记录。
    可以用
    select '存在重复记录' from table2 group by field3 having count(*)>1
    去检查是否有field3重复的记录。如果存在重复field3的记录,那你就要考虑用那一条记录去更新table1中的数据了
      

  3.   

    try:update table1 set (field1,field2)= (select field1,field2 from table2 where table2.field3=table1.field3) where exists (select 1 from table2 where table2.field3=table1.field3)
      

  4.   

    正常的写法如楼上的
    如果table1和tabl2非1对1的关系的话.sql执行会报错的.