插入表栏位为空不更新主表此栏位,不为空就跟新主表的此栏位,SQL语句怎么写

liangjingji 2013-05-09 01:27:18
我开始是这么写的,但是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表的栏位保持原来的值.
...全文
98 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
MrYangkang 2013-05-09
  • 打赏
  • 举报
回复

--后面少了end
case when r.zj is not null then r.zj else p.zj end ,
liangjingji 2013-05-09
  • 打赏
  • 举报
回复
引用 1 楼 ZaoLianBuXiQi 的回复:

--参考第一个写法
UPDATE p SET 
p.zj=(case when r.zj is not null then r.zj else 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

好的,谢谢,我试试看
  • 打赏
  • 举报
回复
引用 楼主 liangjingji 的回复:
我开始是这么写的,但是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表的栏位保持原来的值.
要都是不为空才更行 你就全部case
MrYangkang 2013-05-09
  • 打赏
  • 举报
回复

--参考第一个写法
UPDATE p SET 
p.zj=(case when r.zj is not null then r.zj else 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

34,590

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server相关内容讨论专区
社区管理员
  • 基础类社区
  • 二月十六
  • 卖水果的net
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧