SQL 原子操作 有则更新,无则插入

文章介绍了两种MySQL中的数据插入方法:REPLACEINTO用于替换已存在记录,而INSERTINTOONDUPLICATEKEYUPDATE在键冲突时更新记录。示例展示了如何使用INSERTINTOONDUPLICATEKEYUPDATE结合查询从一个表中插入或更新数据到另一个表。
摘要由CSDN通过智能技术生成

两种方式实现

  • Replace into
  • Insert into on duplicate key update

第一种replace into关键词

REPLACE INTO 表名(列名1, 列名2, ..., 列名n) VALUES (值1, 值2, ..., 值n);

第二种Insert into on duplicate key update

INSERT INTO 表名 (列名1, 列名2, ..., 列名n)查询其他表数组作为数据或者直接写值 ON DUPLICATE KEY UPDATE 列名=VALUES(列名)

//示例
INSERT INTO tj_stat_date_jy_core (cur_day,channel,sub_channel,package,dev_num,app_version,adduser,upuser,aso_num) 
         SELECT 
          '{$cdate}' as cur_day,
          t.channel as channel,
          t.sub_channel as sub_channel,
          t.package as package,
          t.dev_num as dev_num,
          t.app_version as app_version,
          IFNULL(t.adduser,0) AS adduser,
          IFNULL(t.upuser,0) AS upuser,
          IFNULL(t.aso_num,0) AS aso_num
        FROM {$db}.`tj_stat_date_user` t 
        WHERE t.`day` ='{$cdate}'
        GROUP by `cur_day`,channel,sub_channel,package,dev_num,app_version
        ON DUPLICATE KEY UPDATE adduser=VALUES(adduser),upuser=VALUES(upuser),aso_num=VALUES(aso_num)

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值