update assotbldic b set ASSOID=ASSOTBLID
where b.FIRCLA=b.FIRSUPLR and b.SECCLA=b.SECSUPLR and b.FIRSUPLR=FIRSUPLR and b.SECSUPLR=SECSUPLR;

解决方案 »

  1.   

    只允许返回一条记录的子查询返回了多条记录.在子查询后面加 and rownum<2即可.
      

  2.   

    to xhj1,这样只能更新所谓的原始记录阿
      

  3.   

    update assotbldic set ASSOID= (select ASSOTBLID from assotbldic b where b.FIRCLA=b.FIRSUPLR and b.SECCLA=b.SECSUPLR and b.FIRSUPLR=FIRSUPLR and b.SECSUPLR=SECSUPLR)  where b.FIRCLA=b.FIRSUPLR and b.SECCLA=b.SECSUPLR and b.FIRSUPLR=FIRSUPLR and b.SECSUPLR=SECSUPLR;
      

  4.   

    rownum = 1 或 rownum < 2 均可,只是应该考虑数据的合理性.否则被更新后的数据的准确性很可能值得怀疑
      

  5.   

    初学 ORACLE 有很多地方不明白,请教个问题:
    TableA 表的字段: Num Number(5),Name VarChar(20)TableB 表的字段: Num Number(5),Name VarChar(20),IsOld Number(1) Default 0用 SQL 2000 的描述方法是:
    Update B 
        set B.Name = A.Name,B.IsOld = 0
       from TableA A,TableB B 
         where A.Num = B.Num and B.IsOld = 1;
    在 ORACLE 中怎实现?