有单据表case,明细表history。明细表记录case的处理记录。每个case可能有多个history。
case.id = history.caseid问:
我要把所有case的name(随便说的)字段值改成case的最后一条(id自增)处理记录的name(还是随便说的)字段的值。
oracle 中子查询不能用order by,咋个整?小弟没分了。

解决方案 »

  1.   

     
    update case ca set ca.name = (select hi.name from history hi
         where hi.caseid = ca.id
           and hi.caseid = (select max(hi1.caseid) from  history hi1
                            and hi1.caseid = hi.caseid))
     这样子就可以了~~~
      

  2.   

    update case ca
       set ca.name =
           (select hi.name, max(hi.caseid)
              from history hi
             group by hi.name
             where hi.caseid = ca.id)
      

  3.   

    不好意思,写错了
    update case ca
       set ca.name =
           (select hi.name
              from (select h.name, max(h.caseid) caseid
                      from history h
                     group by h.name) hi
             where hi.caseid = ca.id);