请教 mysql 插入或更新某个字段的写法

258 天前
 yagamil
请教 db 大佬,要更新某一行的某个字段,比如 让 totalSale 字段+X, 如果不存在这行数据的时候插入整条数据,totalSale 值为 X 。

问 chatGPT 需要知道唯一键的 id 才能做到,但更新的那行记录是通过条件查找到的,有大佬知道怎么操作么?

逻辑大概这样
if(`select 1 from xxx where xxxx`){
// 存在,直接更新
`update xxx set totalSale = totalSale + X where month=xx and user=xxx`
}else{
`insert into xxx (xxx)`
}
1371 次点击
所在节点    MySQL
5 条回复
zpfhbyx
258 天前
insert into on duplatekey 关键字
waitingChou
258 天前
直接 replace 或者 on duplicate key update

没理解你的疑惑,你插入数据的时候不也要组装那个 唯一键的 id 信息么。
wuyiccc
258 天前
乐观锁+全局 redis 分布式锁解决一切并发问题
yagamil
258 天前
@zpfhbyx @waitingChou 感谢大佬
jalena
258 天前
@zpfhbyx
@waitingChou

只要有约束,以上 2 种方式都行,但 replace 方式是先删除再创建。

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/1030525

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX