我开始是这么写的,但是r表只跟改了一个栏位,其它的栏位为空,然后把p表开始的栏位数据也跟新为空了.
UPDATE p SET p.zj=r.zj,p.jbgz=r.jbgz,p.zwjt=r.zwjt,p.gwjt=r.gwjt,p.txjt=r.txjt,p.glgz=r.glgz,p.xj=r.xj, p.jtbt=r.jtbt,p.znbt=r.znbt,p.glf=r.glf,p.gjjjs=r.gjjjs,p.yljs=r.yljs,p.ghkk=r.ghkk,p.shjt=r.shjt  
 FROM hs_gzzldr r LEFT JOIN hp_zd01 p ON r.zgbh=p.zgbh   
 WHERE  __chk = 1
我现在想要的是,当r的任意一个栏位不为空时才跟新p表相对应的栏位,否则p表的栏位保持原来的值. 

解决方案 »

  1.   

    按照zj那列来改,我就不给你全部写了。UPDATE  p
    SET     p.zj = isnull(r.zj,p.zj) ,
            p.jbgz = r.jbgz ,
            p.zwjt = r.zwjt ,
            p.gwjt = r.gwjt ,
            p.txjt = r.txjt ,
            p.glgz = r.glgz ,
            p.xj = r.xj ,
            p.jtbt = r.jtbt ,
            p.znbt = r.znbt ,
            p.glf = r.glf ,
            p.gjjjs = r.gjjjs ,
            p.yljs = r.yljs ,
            p.ghkk = r.ghkk ,
            p.shjt = r.shjt
    FROM    hs_gzzldr r
            LEFT JOIN hp_zd01 p ON r.zgbh = p.zgbh
    WHERE   __chk = 1