速成大神小技巧——Mysql批量|DUPLICATE高级用法

本文介绍了MySQL中处理数据入库冲突的两种方法:ON DUPLICATE KEY UPDATE和REPLACE。这两种方法在遇到唯一索引或主键冲突时有不同的处理方式,前者更新已有记录,后者删除并插入新记录。通过比较两者的异同,帮助读者理解如何在不同场景下选择合适的方法。
摘要由CSDN通过智能技术生成


此系列为速成大神系列,掌握这些小技巧,让你在人群中脱颖而出!

数据入库

单条入库

一般初级或简单场景,单条数据入库,SQL如下:

insert into user_info (user_id,user_name,status,years)values (123,'你好’,1,15)
或者
insert into user_info set user_id=123,user_name=“你好”,status=1,years=15;

批量入库

企业级中、大流量业务场景,数据批量写入,SQL如下:

insert into user_info (user_id,user_name,status,years)values (123,‘你好’,1,15),(456,“你好”,2,16);

数据冲突

入库冲突

在某些业务场景中,入库操作一般入库前会去检索下,看数据是否已在表中进行Updata/Insert ,避免数据冲突。

下文交代一种无需检索,直接入库的方法<ON DUPLICATE KEY UPDATE和REPLACE>,也是本文的重点;

如果以user_id 为主键,则:
insert in

  • 12
    点赞
  • 16
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 18
    评论
引用\[1\]中提到了两个关于Duplicate的用法,分别是ON DUPLICATE KEY UPDATE和REPLACE。ON DUPLICATE KEY UPDATE是在插入行出现唯一索引或主键重复时,执行旧的update操作;如果不会导致唯一索引或主键重复,则直接添加新行。REPLACE是在插入行出现唯一索引或主键重复时,删除老记录,然后插入新的记录;如果不会导致唯一索引或主键重复,则直接添加新行。\[1\] 引用\[2\]中进一步解释了REPLACE的用法。当主键或唯一索引重复时,REPLACE会删除老记录,然后插入新的记录。因此,原有的所有记录会被清除。如果REPLACE语句的字段不全,一些原有字段的值可能会被自动填充为默认值。\[2\] 引用\[3\]是一个关于boost::hana::duplicate用法的C++实现代码。它使用了boost::hana库中的duplicate函数,将一个lazy值复制了两次。在这个例子中,非常懒惰的值被复制了两次,最终提取出来的值是3。\[3\] 综上所述,Duplicate的用法可以根据具体的情况选择使用ON DUPLICATE KEY UPDATE或REPLACE来处理唯一索引或主键重复的情况。而在boost::hana库中,duplicate函数可以用来复制lazy值。 #### 引用[.reference_title] - *1* *2* [速成大神技巧——Mysql批量|DUPLICATE高级用法](https://blog.csdn.net/qq_34417408/article/details/117297555)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insert_down28v1,239^v3^insert_chatgpt"}} ] [.reference_item] - *3* [boost::hana::duplicate用法的测试程序](https://blog.csdn.net/it_xiangqiang/article/details/117605432)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insert_down28v1,239^v3^insert_chatgpt"}} ] [.reference_item] [ .reference_list ]
评论 18
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

魏小言

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值