胖虎提刀斩大雄 2017-05-09 02:13 采纳率: 0%
浏览 2423
已结题

MySQL 中 ON DUPLICATE KEY 方法问题

INSERT INTO Z_RV(
DOC_NO,
CMMDTY_CODE,
SUPPLIER_CODE,
PLANT_CODE,

INV_LOCAT,

BATCH_NO,
SRC_SYS,
EXTERNAL_DOC_NO,
STORE_NO,
IS_FACTORY_DELIVERY,
SIMS_DOC_NO,
SIMS_DOC_ITEM_NO,
ACTIVITY_NO,
PRE_LOCK_DATE,
REQUIRE_DATE,
RV_QTY,
INIT_FLAG,
UPDATER,
CREATE_TIME,
UPDATE_TIME)
values(
:DOC_NO,
:CMMDTY_CODE,
:SUPPLIER_CODE,
:PLANT_CODE,
:INV_LOCAT,
:BATCH_NO,
:SRC_SYS,
:EXTERNAL_DOC_NO,
:STORE_NO,
:IS_FACTORY_DELIVERY,
:SIMS_DOC_NO,
:SIMS_DOC_ITEM_NO,
:ACTIVITY_NO,
:PRE_LOCK_DATE,
:REQUIRE_DATE,
:RV_QTY,
:INIT_FLAG,
:UPDATER,
:CREATE_TIME,
:UPDATE_TIME
)
ON DUPLICATE KEY
UPDATE <#if RV_QTY?? && RV_QTY!=''>
RV_QTY = RV_QTY + :RV_QTY,
</#if>
UPDATE_TIME = :UPDATE_TIME,
REQUIRE_DATE = :REQUIRE_DATE

这个SQL语句我需要实现先新增,新增不成功,再更新RV_QTY,UPDATE_TIME,REQUIRE_DATE,这三个字段,但是更新的时候我需要 更具CMMDTY_CODE SUPPLIER_CODE PLANT_CODE INV_LOCAT ACTIVITY_NO这五个条件更新,我需不需要加where条件,sql语句怎么修改

  • 写回答

2条回答 默认 最新

  • #朱守成# 2017-05-09 02:24
    关注

    ON DUPLICATE KEY 不能实现你的功能的。 它的意思就是当主键重复的时候执行更新操作 后面不能加where条件。你这样只能用存储过程,或在程序
    业务逻辑中处理

    评论

报告相同问题?

悬赏问题

  • ¥15 YoloV5 第三方库的版本对照问题
  • ¥15 请完成下列相关问题!
  • ¥15 drone 推送镜像时候 purge: true 推送完毕后没有删除对应的镜像,手动拷贝到服务器执行结果正确在样才能让指令自动执行成功删除对应镜像,如何解决?
  • ¥15 求daily translation(DT)偏差订正方法的代码
  • ¥15 js调用html页面需要隐藏某个按钮
  • ¥15 ads仿真结果在圆图上是怎么读数的
  • ¥20 Cotex M3的调试和程序执行方式是什么样的?
  • ¥20 java项目连接sqlserver时报ssl相关错误
  • ¥15 一道python难题3
  • ¥15 牛顿斯科特系数表表示