INSERT ... ON DUPLICATE KEY UPDATE

好久没回来了,最近太忙了,不是因为双十一,而是因为复杂的业务加上基建的落后造成了精神和身体焦虑内耗。
这些日子,深刻的感悟到一个结果,就是上班真的没时间学习,加班是个内耗的事情。所以从工作中脱离才是实现个体的最佳方式。

为了节约您的时间,现总结下文章内容。不需要可直接绕过。嘿哈
文章内容:INSERT … ON DUPLICATE KEY UPDATE 的使用。

图:2018年拍摄于杭州西溪湿地河渚街附近的波斯菊
2018年拍摄于杭州西溪湿地河渚街附近的波斯菊

研发场景:

那现在有一张table表,
其中主键 `primary key 是 string :user_id和date:data_time 两个字段
还有其他字段。我需要往这张表写中间数据,如何做到 saveOrUpdate操作呢? 即不存在即插入,存在即更新呢?

杀鸡刀-实战

传统意义上来讲是先查出来,判断记录是否存在,再进行新增或更新操作,如何一步到位呢,我就不想先查出来,假设几百万条数据 查个dei啊

牛刀-实战:

在该实际场景中,使用 INSERT ... ON DUPLICATE KEY UPDATE 语句是非常适合的。它可以在 MySQL 中实现不存在即插入,存在即更新的功能。假设你的表 table 的主键由 user_iddata_time 组成,下面是实现的方式。


示例 SQL 语句

INSERT INTO `table` (user_id, data_time, field1, field2, field3)
VALUES 
    ('userid_1', '2024-11-27 15:00:00', 10, 20, 30)
ON DUPLICATE KEY UPDATE 
    field1 = VALUES(field1),
    field2 = VALUES(field2),
    field3 = VALUES(field3);

说明:

  1. INSERT INTO 部分
    • 将要插入的数据列出。
  2. ON DUPLICATE KEY UPDATE 部分
    • 如果主键 (user_id, data_time) 已存在,则更新指定字段。
    • VALUES(fieldX) 表示用本次插入的值来更新字段。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值