达梦数据批量跟新和插入

达梦数据批量跟新和插入

如题

使用 merge into

表结构

如下
CREATE TABLE "TEST"."GOODS_1" ( "GID" BIGINT, "GNAME" VARCHAR(50), "USER_ID" BIGINT, "GSTATUS" VARCHAR(50)) STORAGE(ON "MAIN", CLUSTERBTR) ;

MERGE INTO TEST.GOODS_1 a 
USING (
    SELECT 11 as gid, 't444' as gname, 1 as user_id, 11 as gstatus FROM dual
    UNION ALL
    SELECT 22 as gid, 't244' as gname, 1 as user_id, 11 as gstatus FROM dual
     UNION ALL
    SELECT 33 as gid, 't244' as gname, 1 as user_id, 11 as gstatus FROM dual
) b
ON (a.gid = b.gid)  -- 需要指定匹配条件
WHEN NOT MATCHED THEN
    INSERT (gid, gname, user_id, gstatus)
    VALUES (b.gid, b.gname, b.user_id, b.gstatus)
when matched then
   UPDATE SET 
    
            a.gname = b.gname,
            a.user_id = b.user_id,
            a.gstatus = b.gstatus

对应mybatis ximl写法如下



<update id="mergeGoods">
    MERGE INTO TEST.GOODS_1 a 
    USING (
        <foreach collection="list" item="item" separator="UNION ALL">
            SELECT 
                #{item.gid} as gid,
                #{item.name} as name,
                #{item.quantity} as quantity,
                #{item.price} as price
            FROM dual
        </foreach>
    ) b
    ON (a.gid = b.gid)
    WHEN MATCHED THEN
        UPDATE SET 
            a.name = b.name,
            a.quantity = b.quantity,
            a.price = b.price,
            a.update_time = SYSDATE
    WHEN NOT MATCHED THEN
        INSERT (gid, name, quantity, price, create_time)
        VALUES (b.gid, b.name, b.quantity, b.price, SYSDATE)
</update>
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值