update lxf_cs_tqpz set lxf_cs_tqpz.gjz=cs_tqpz.gjz 
 where  lxf_cs_tqpz.gjz in
(select cs_tqpz.gjz from lxf_cs_tqpz,cs_tqpz where lxf_cs_tqpz.bm=cs_tqpz.bm)

解决方案 »

  1.   

    select cs_tqpz.gjz from lxf_cs_tqpz,cs_tqpz where lxf_cs_tqpz.bm=cs_tqpz.bm返回多于一行了,遮造成了錯誤。
    限定死你的條件。
      

  2.   

    update lxf_cs_tqpz set gjz=(select max(gjz) from cs_tqpz where lxf_cs_tqpz.bm=cs_tqpz.bm)
      

  3.   

    select cs_tqpz.gjz from lxf_cs_tqpz,cs_tqpz where lxf_cs_tqpz.bm=cs_tqpz.bm看看这个返回几条纪录,是否都一样,如果不一样,那就是你sql设计有问题了。如果一样,那就update lxf_cs_tqpz set gjz=(select max(gjz) from cs_tqpz where lxf_cs_tqpz.bm=cs_tqpz.bm)
    或update lxf_cs_tqpz set gjz=(select min(gjz) from cs_tqpz where lxf_cs_tqpz.bm=cs_tqpz.bm)都可以!
      

  4.   

    以下语句在8i上运行通过
    ========================================================
    SQL> select * from a;        ID SM
    ---------- ------------------------------
             1 bad1
             2 bad1
             3 bad1SQL> select * from b;        ID SM
    ---------- ------------------------------
             1 good1
             2 good2
             3 good3SQL> update a set a.sm = (select b.sm from b where a.id = b.id and rownum<=1);3 rows updatedSQL> select * from a;        ID SM
    ---------- ------------------------------
             1 good1
             2 good2
             3 good3SQL> select * from b;        ID SM
    ---------- ------------------------------
             1 good1
             2 good2
             3 good3SQL>
      

  5.   

    首先感谢各位的指点。
    我试了一下,LGQDUCKY(飘) 的语句在系统中无法运行,我用的TOAD程序不认第一行中的cs_tqpz.gjz 方式;
    用beckhambobo(beckham) 和cricketlj(蟋蟀) 的方法,则不能打到我原先想得到的结果,我想得到的结果是如果A.ID=B.ID,那么使得A.SM=B.SM,也就是说如果ID相同,那么我要让两个表的SM也相同.
    请各位再帮忙想一下
      

  6.   

    为什么不用procedure来完成呢?
    非常简单,而且可扩展性也好哟!~~~
      

  7.   

    为什么不用procedure来完成呢?
    非常简单,而且可扩展性也好哟!~~~