UPDATE result a
   SET (level1, code_type) =
    (SELECT level1,
       code_type
       FROM template b
       WHERE b.id = a.id
    AND rownum < 2)
 WHERE a.month_id =200807此处为什么要加个and rownum<2这个条件

解决方案 »

  1.   

    b表中某一个id等于a表中某一个id的可能存在多个记录,用rownum<2表示只取一条记录,这样不会报错
      

  2.   

    SELECT level1, 
          code_type 
          FROM template b 
          WHERE b.id = a.id 
        AND rownum < 2
    这个语句返回多行,上面这个语句的意思是返回第一行
    而外层写的是WHERE a.month_id =200807 
    这应该是多个行
    看他这个sql的意思应该是把a.month_id =200807的
    level1, code_type的所有数据都更新为同一个值