update更新多个字段

oracle可执行数据库语句:

UPDATE yl_lnrxx 
   SET (lbtid, lsfxs, lksrq, ljsrq, lfwzjid, lfwzjmc) =  
   (select x_id, 1, xksxsrq, xjsxsrq, xfwzjid, xfwzj from btjs_xszffwbt  where x_id = '$pkid$' AND sys_spzt = 1 AND sys_djzt = '1')  
 WHERE pk_yl_lnrxx = (select xlnrid from btjs_xszffwbt where x_id  = '$pkid$')

但在mysql无法识别,需要转换语法

尝试mysql语法:

 UPDATE yl_lnrxx a, (select x_id, 1 AS sfxs,xksxsrq, xjsxsrq, xfwzjid, xfwzj from btjs_xszffwbt  where x_id = '$pkid$' AND sys_spzt = 1 AND sys_djzt = '1')  b 
 SET a.lbtid = b.x_id, a.lsfxs = b.sfxs,a.lksrq =b.xksxsrq,a.ljsrq=b.xjsxsrq,a.lfwzjid =b.xfwzjid,a.lfwzjmc=b.xfwzj 
 WHERE pk_yl_lnrxx = (select xlnrid from btjs_xszffwbt where x_id  = '$pkid$')

mysql可行,oracle报错:missing SET  keyword 
oracle调试无解

单个单个获取,两者能通用,但是语句多,繁琐。
UPDATE yl_lnrxx 
 SET lbtid =  (select x_id from  (select x_id from btjs_xszffwbt  where x_id = '$pkid$' AND sys_spzt = 1 AND sys_djzt = '1')  xx),
     lsfxs =  1,
     lksrq =  (select xksxsrq from  (select xksxsrq from btjs_xszffwbt  where x_id = '$pkid$' AND sys_spzt = 1 AND sys_djzt = '1')  xx),
     ljsrq =  (select xjsxsrq from  (select xjsxsrq from btjs_xszffwbt  where x_id = '$pkid$' AND sys_spzt = 1 AND sys_djzt = '1')  xx),
     lfwzjid =  (select xfwzjid from  (select xfwzjid from btjs_xszffwbt  where x_id = '$pkid$' AND sys_spzt = 1 AND sys_djzt = '1')  xx),
     lfwzjmc =  (select xfwzj from  (select xfwzj from btjs_xszffwbt  where x_id = '$pkid$' AND sys_spzt = 1 AND sys_djzt = '1')  xx)
 WHERE pk_yl_lnrxx = (select xlnrid from btjs_xszffwbt where x_id  = '$pkid$') 

需要有更好的方式处理
写类,让它们规范的转化,而不是直接用数据库语句让它们转化

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值